import java.awt.*;import javax.swing.*;
import java.awt.event.*;
public class Aaa extends JFrame implements Runnable{ MyPanel mp;

public static void main(String[] agrs){
Aaa a = new Aaa();
new Thread(a).start();
}


public Aaa(){
super("GAME");
this.setBounds(400, 400, 800, 600);
this.setResizable(false);
this.setVisible(true);
mp=new MyPanel();
this.add(mp);
mp.requestFocus(); 


}

public void run(){
while(true){
mp.repaint();
}

}

 class MyPanel extends JPanel{
 int x=200,y=200;
 MyPanel (){
this.setSize(800, 600);
this.setBackground(Color.BLUE);
this.addKeyListener(new KeyMonitor());
setDoubleBuffered(true);
 }
 protected void paintComponent(Graphics g){  
  super.paintComponent(g);
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 20, 20);
g.setColor(c);


}
 
 

public class KeyMonitor extends KeyAdapter{
public void keyPressed(KeyEvent e) {

if(e.getKeyCode()==KeyEvent.VK_RIGHT){
x=+5;
}else if(e.getKeyCode()==KeyEvent.VK_LEFT){
x=-5;
}else if(e.getKeyCode()==KeyEvent.VK_UP){
y=-5;
}else if(e.getKeyCode()==KeyEvent.VK_UP){
y=+5;
}

}
}
 }




}
各位大虾, 这个程序运行有闪屏现象,怎么解决。

解决方案 »

  1.   

    new Thread(a).start(); //直接引用有个方法,闪屏没见过.代码记得规范.
      

  2.   

    this.add(mp); 
              mp.requestFocus(); 
    位置互换下看下
      

  3.   

    while(true){ 
    mp.repaint(); 

    一直在重画 能不闪屏么 而且弄界面需要另外开线程么 我觉得大可不必