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
  
 }
}
?????????????????????结果出错???????????????前面的球还在,没有消失
  

解决方案 »

  1.   

    public void paint(Graphics g){
      g.fillOval(x, y, 10, 10);
    }你在的paint函数中,根本没把之前的轨迹清除掉啊。如果你要偷懒,那么就这么写:
    public void paint(Graphics g){
      super.paint(g);
      g.fillOval(x, y, 10, 10);
    }
      

  2.   

    在 paint 中,先将原来draw的清除掉,就好了