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;
}
}
}
}
}
各位大虾, 这个程序运行有闪屏现象,怎么解决。
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;
}
}
}
}
}
各位大虾, 这个程序运行有闪屏现象,怎么解决。
mp.requestFocus();
位置互换下看下
mp.repaint();
}
一直在重画 能不闪屏么 而且弄界面需要另外开线程么 我觉得大可不必