Guten Tag alle miteinander,
auch wenn Swing nicht mehr das aktuellste ist, möchte ich trotzdem etwas in Swing programmieren. Dazu verwende ich eine BufferStrategy. Diese hat eigentlich die Aufgabe das Flackern zu verhindern. Das funktioniert auch soweit ganz gut. Doch beim vergrößern oder verkleinern des Fensters(JFrame) flackert es doch ziemlich. Ich würde mich freuen, wenn diese Frage geklärt werden könnte. Danke!
Hier der Code (Dort kann man das Problem sehr gut sehen):
auch wenn Swing nicht mehr das aktuellste ist, möchte ich trotzdem etwas in Swing programmieren. Dazu verwende ich eine BufferStrategy. Diese hat eigentlich die Aufgabe das Flackern zu verhindern. Das funktioniert auch soweit ganz gut. Doch beim vergrößern oder verkleinern des Fensters(JFrame) flackert es doch ziemlich. Ich würde mich freuen, wenn diese Frage geklärt werden könnte. Danke!
Hier der Code (Dort kann man das Problem sehr gut sehen):
Java:
import java.awt.*;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
public class Test extends JFrame {
private static final long serialVersionUID = 1L;
//BufferStrategy
private BufferStrategy bufferStrategy;
/*
* Initialisieren
*/
public void init() {
super.setDefaultCloseOperation(EXIT_ON_CLOSE);
super.setSize(1200, 800);
super.setLocation((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - 600,(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - 400);
super.setTitle("GAME");
super.setVisible(true);
super.createBufferStrategy(2);
bufferStrategy = this.getBufferStrategy();
}
/*
* Gibt das Graphics-Object der BufferStrategy mit.
*/
public Graphics graphics() {
return bufferStrategy.getDrawGraphics();
}
/*
* Neu zeichnen
*/
public void indicate() {
bufferStrategy.show();
}
/*
* Main-Methode
*/
public static void main(String[] args) {
Test test = new Test();
test.init();
while(true) {
Graphics g = test.graphics(); //Graphics von bufferStrategy
g.fillRect(0, 0, 100, 100);
test.indicate(); //Anzeigen
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Zuletzt bearbeitet von einem Moderator: