Also habe ich einen JFrame mit einigen Buttons und einer JComponent zum Einzeichnen. Ich lade einige Images und male den 1. in die JComponent. Jetzt ist mein Problem, dass meine JComponent, sobald ich das 1. Mal male, permanent neu streicht und nach ein paar Sekunden bekomme ich ein OutOfMemoryError ... Ich denke, das g.drawImage(...)
ist das Problem, denn wenn ich es auskommentieren gibt es keine unendliche Schleife mehr:JComponent permanent neu streichen
@Override
public void paintComponent(Graphics g){
System.out.println("Test");
if(!images.isEmpty()){
Image img = activeImage.img.getScaledInstance(middleImage.getWidth(), middleImage.getHeight(), Image.SCALE_SMOOTH);
if(mode != 0){
if(mis != null){
img = createImage(mis).getScaledInstance(middleImage.getWidth(), middleImage.getHeight(), Image.SCALE_SMOOTH);
}
}
g.drawImage(img, 0, 0, this);
}
}
Willkommen bei DAMIT. Bitte tun Sie die Leute, die Ihnen einen Gefallen tun wollen und erstellen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) –
1) Sie müssen 'repaint 'und' revalidate' ausführen auf Event-Versand-Thread (EDT) über 'invokeLater'. 2) Ihre Threads, insbesondere das 'ContinuousDraw' gehen in eine Schleife und schlafen niemals, was die EDT-Fähigkeit beeinträchtigen kann, sich neu zu streichen. 3) 'createImage (mis)' in der Schleife kann zu wenig Arbeitsspeicher verursachen, wenn es viel zu oft ausgeführt wird. – tsolakp
Aktualisieren Sie den Status einer Komponente nicht innerhalb einer Paint-Methode. – MadProgrammer