import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Test extends JFrame{
MyJPanel jp = null;
public static void main(String[] args){
new Test();
}
public Test(){
jp=new MyJPanel();
this.add(jp);
this.addKeyListener(jp);
this.setSize(200, 100);
this.setVisible(true);
}
}
class MyJPanel extends JPanel implements KeyListener{
int x=0;
int y=0;
public void paint(Graphics g){
g.fillOval(x, y, 10, 10);
} @Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getKeyCode()==KeyEvent.VK_L){
x++;
}
repaint();
} @Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
} @Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
?????????????????????结果出错???????????????前面的球还在,没有消失
g.fillOval(x, y, 10, 10);
}你在的paint函数中,根本没把之前的轨迹清除掉啊。如果你要偷懒,那么就这么写:
public void paint(Graphics g){
super.paint(g);
g.fillOval(x, y, 10, 10);
}