Während ich Farbe von JFrame verwende, flackert mein Bildschirm viel. Ich kann es nicht stoppen und ich würde gerne wissen, wie es aufhören kann zu flackern. Ich habe auch versucht, den swing.timer hier hinzuzufügen, aber es macht immer noch nichts. Paket Spiel;Java JFrame-Farbmethoden-Anzeige flackert
public class Play extends JFrame implements MouseMotionListener, MouseListener, KeyListener, ActionListener {
private int _xPad,_yPad,_xdir,_ydir;
private Brick[][] _bricks;
private Ball _gameBall;
private Timer _timer;
public Play(int[][] board){
super("Elemental Brick Breaker");
_xdir = 0;
_ydir = 0;
_xPad = 350;
_yPad = 500;
_timer = new Timer(1000,this);
_timer.start();
_gameBall = new FireBall(_xPad,_yPad);
_bricks = new Brick[8][10];
int x = 75, y = 40;
for(int i = 0 ; i < 8 ; i++) {
for(int j = 0 ; j < 10 ; j++) {
_bricks[i][j] = new FireBrick(x,y);
x = x + 65;
}
y = y + 25;
x = 75;
}
}
public void paint(Graphics g) {
super.paint(g);
g.fillRect(_xPad, _yPad, 120, 10);
for(int i = 0 ; i < 8 ; i++) {
for(int j = 0 ; j < 10 ; j++) {
g.fillRect(_bricks[i][j].getX(), _bricks[i][j].getY() , 60, 20);
}
}
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
Verwenden Sie eine Lightweight-Komponente (z. B. JPanel) und überschreiben Sie sie mit der Methode "paintComponent". Siehe [die Oracle-Tutorials] (https://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html) – copeg
"Swing-Programme sollten' paintComponent() 'überschreiben, anstatt' paint() 'zu überschreiben." - [* Malen in AWT und Swing: Die Malmethoden *] (http://www.oracle.com/technetwork/java/painting-140037.html#callbacks). – trashgod
"Swing-Programme sollten paintComponent() überschreiben:" JFrame hat keine paintComponent - was sagst du dazu ??? – gpasch