Warum funktioniert der folgende Code nicht?
Mein Problem: Im Konstruktor erstelle ich zuerst ein leeres BuffereImage image. Die Methode createBild() stellt eine Matrix in der Größe des images mit int-Werten zur Verfügung. Die beiden for Schleifen durchlaufen das image und färben es mithilfe den int-Werten der Matrix ein. Wie ihr seht, rufe ich nach jeder eingefärbten Zeile x this.repaint() auf, was das JPanel ja eigentlich updaten sollte.
Mein Ziel ist es, dass beim Starten des Programm das JPanel Zeile für Zeile neugezeichnet wird. Der sleep Befehl sorgt dafür, dass das image nicht zu schnell eingezeichnet wird.
Wenn ich das bisherige Programm so starte wird kein Frame angezeigt. Erst wenn er das ganze image eingefärbt hat, wird es dann fertig im Frame angezeigt. Ich möchte aber dass es sofort angezeigt wird und vor den Augen des Benutzers eingefärbt wird. Wie mache ich das?
Vielen Dank im Voraus
Mein Problem: Im Konstruktor erstelle ich zuerst ein leeres BuffereImage image. Die Methode createBild() stellt eine Matrix in der Größe des images mit int-Werten zur Verfügung. Die beiden for Schleifen durchlaufen das image und färben es mithilfe den int-Werten der Matrix ein. Wie ihr seht, rufe ich nach jeder eingefärbten Zeile x this.repaint() auf, was das JPanel ja eigentlich updaten sollte.
Java:
public class ImagePanel extends JPanel{
int[][] matrix = new int[1920][1080];
private BufferedImage image;
public ImagePanel() throws IOException{
image = new BufferedImage(1920,1080, BufferedImage.TYPE_INT_RGB);
createBild(1920,1080);
for(int y=0;y<1080;y++){
for(int x=0;x<1920;x++){
image.setRGB(x,y,matrix[x][y]);
}
this.repaint();
TimeUnit.MILLISECONDS.sleep(100);
}
Wenn ich das bisherige Programm so starte wird kein Frame angezeigt. Erst wenn er das ganze image eingefärbt hat, wird es dann fertig im Frame angezeigt. Ich möchte aber dass es sofort angezeigt wird und vor den Augen des Benutzers eingefärbt wird. Wie mache ich das?
Vielen Dank im Voraus