Verhindern das repaint beim vergrößern aufgerufen wird

Der einzig mir bekannte Weg ist über den RepaintManager.

Java:
RepaintManager myPanelsManager = RepaintManager.currentManager(myPanel)
myPanelsManager.markCompletelyClean(myPanel);

Das würde das auto-repaint() verhindern.
Ich kann dir aber nicht sagen welche Nebeneffekt der Weg eventuell hat da ich es selber noch nie benutzt habe.

Wenn du nur verhindern willst dass repaint() während des vergrößeren / verkleinern des Fensters aufgerufen wird dann könnte das auch hilfreich sein:
Java:
Toolkit.getDefaultToolkit().setDynamicLayout(false);
(Quelle)

Gruß Robert
 
Bin ja gerade dabei ein TicTacToe mit dynamischer Größe zu programmieren und wenn man zu viele Zeilen, Spalten generiert dann sind die Felder sehr klein und man muss das Fenster vergrößern. Leider wird dann immer das zuletzt gezeichnete auf allen Felder gezeichnet.
 
Bin ja gerade dabei ein TicTacToe mit dynamischer Größe zu programmieren und wenn man zu viele Zeilen, Spalten generiert dann sind die Felder sehr klein und man muss das Fenster vergrößern. Leider wird dann immer das zuletzt gezeichnete auf allen Felder gezeichnet.
Dann solltest du den Fehler beheben, anstatt zu verhindern, dass er sich zeigt.
 
Weißt du vielleicht wie man den Fehler beheben kann ?
count ist am Anfang 0 und bei jedem Klick wird count um 1 erhöht.

Java:
 public void paintComponent(Graphics g)
{
     super.paintComponent(g);
    
     if(Variables.count == 0)
     {
         return;
     }
    
     if(Variables.count % 2 == 0)
     {
         g.drawImage(ImageLoader.imgX, 0, 0, this.getWidth(), this.getHeight(), null);    
     } else {
         g.drawImage(ImageLoader.imgO, 0, 0, this.getWidth(), this.getHeight(), null);
     }
}
}
 
Naja so geht das natürlich nicht. Du solltest dem Panel ein Flag (boolean) geben ob es schon geklcickt wurde oder nicht. Also wenn ein Panel geklickt wird, dann panel.setClicked(true). in der paintComponent frgst du dann nur noch ob ob das flag gesetzt ist oder nicht und wählst das entsprechende Bild

Gruß

Claus
 
Jedes Panel hat schon einen boolean aber wie kann ich auswählen welches Bild es laden soll. Bei (!p.bool) soll es zeichnen und wenn es true ist eben nicht. Falls es false ist soll es erst ein X und danach ein O laden.

Gruß
 
Zuletzt bearbeitet:

Zurück
Oben