日期:2014-05-20  浏览次数:20676 次

关于paintComponent
import java.awt.Graphics;
import java.awt.event.*;

import javax.swing.*;


public class Line extends JFrame {


public Line(){
 LinePanel line = new LinePanel();
add(line);

line.setFocusable(true);
}

public static void main(String []args){
Line frame = new Line();
frame.setTitle("Draw Lines");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

static class LinePanel extends JPanel{

private int x1 = 200;
private int y1 = 200;
private int x2 = x1;
private int y2 = y1;

public LinePanel(){
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_DOWN:
x2 = x1;
y2 = y1+10;
break;
case KeyEvent.VK_UP:
x2 = x1;
y2 = y1-10;
break;
case KeyEvent.VK_RIGHT:
x2 = x1+10;
y2 = y1;
break;
case KeyEvent.VK_LEFT:
x2 = x1-10;
y2 = y1;
break;
}
repaint();

}
});
}



protected void paintComponent(Graphics g){

super.paintComponents(g);

g.drawLine(x1, y1, x2, y2);
x1 = x2;
y1 = y2;
}
}
}


写了一段用键盘上下左右画线段的代码。可是不明白为什么用了super.paintComponents(g);
后之前画的线段能继续显示 不是说super.paintComponents(g);会起到清屏重新绘制的作用吗?求详细解惑 谢了~~~~~~~
------解决方案--------------------
看看你的结贴率,让回帖的人情何以堪啊!
------解决方案--------------------
该回复于2012-11-18 23:21:07被管理员删除