Swing repaint wird in for-Schleife aufgerufen - was passiert?

Status
Nicht offen für weitere Antworten.

icarus2

Top Contributor
Huhu

Ich habe einen rekursiven Algorithmus, der immer wenn es eine neue Lösung gibt die Methode ausgabe() und repaint() aufruft. ausgabe() gibt diese Lösungen aus. Diese beiden Methodenaufrufe befinden sich in einer for-Schleife.

Mein Problem:
Die Lösungen werden in einem Array gespeichert. Über die Konsole mit ausgabe() werden die Lösungen alle richtig angezeigt. Jedoch wird die repaint()-Methode nicht richtig aufgerufen und im Array sind falsche Werte gespeichert.

Deswegen die Frage:
Was passiert wenn ich repaint() in einer for-Schleife aufrufe. Wird repaint() im Hintergrund behandelt und während dessen läuft die for-Schleife weiter, oder wird erst die for-Schleife beendet und dann kommt das repaint()? (Letzeres halte ich für unwahrscheinlich).

Ich habe leider in der API nix dazu gefunden, ausser dass die Methode alles notwendige neu zeichnet, was ich bereits wusste.

Kann mir da jmd helfen?

PS: Da es eine recht allgemeine Frage ist über das repaint() will ich den Post nicht gleich mit Code zupflastern. Wenn ihr ihn braucht liefer ich den natürlich gerne nach.


Edit:
So wie es aussieht von den Resultaten, die vom repaint() ausgegeben werden, wird zuerst die for-Schleife beendet und erst dann wenn alles druch ist das repaint() gemacht.

Der array wird bei jedem Durchlauf der for-Schleife verändert. D.h. wenn repaint() im Hintergrund laufen würde ==> plöd für mich.
 
Zuletzt bearbeitet von einem Moderator:

Ebenius

Top Contributor
Die Methode repaint() legt einen Event in die AWT EventQueue. Wenn dieser vom Event Dispatch Thread (kurz EDT; der Thread der alle GUI-Events nacheinander abarbeitet) abgearbeitet wird, dann wird die Komponente neu gezeichnet. Das heißt, der Ablauf zwischen Aufruf der repaint()-Methode und Neuzeichnen der Komponente erfolgt asynchron. Es sei denn, der repaint()-Aufruf erfolgt aus dem EDT. Das ist insbesondere dann der Fall, wenn man eine Aktion aus einem EventHandler (zum Beispiel ActionListener eines Buttons) ausführt. Bei kurzen Aktionen gibt es kein Problem. Länger laufende Aktionen müssen hingegen in einen anderen Thread ausgelagert werden.

Allerdings müssen alle Änderungen an den Komponenten synchron zum EDT erfolgen. Dazu gibt es Hilfsmethoden in der SwingUtilities-Klasse. Man kann auch super den SwingWorker für soetwas verwenden. Hier drei kleine Beispiele:

Wie man es nicht macht
Java:
/*
 * So funktioniert es nicht! In der gesamten GUI wird nichts gezeichnet,
 * keine Eingaben funktionieren, etc, bis die 20 Sekunden um sind.
 */
button.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {
    for(int i = 0; i < 20; i ++) {
      try { Thread.sleep(1000); }
      catch (InterruptedException ex) {}
      button.setText(i + " Sekunden");
    }
    button.setText("Fertig!");
  }
});

Ein einfaches Beispiel mit einem eigenen Thread
Java:
/*
 * So funktioniert es! Ein neuer Thread zum abarbeiten, Änderungen an der
 * GUI sind wieder synchron zum EDT.
 */
button.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {
    new Thread(new Runnable() {

      public void run() {
        performWork();
      }

    }).start();
  }

  private void performWork() {
    for (int i = 0; i < 20; i++) {
      try { Thread.sleep(1000); }
      catch (InterruptedException ex) {}
      setButtonText(i + " Sekunden");
    }
    setButtonText("Fertig!");
  }

  private void setButtonText(String text) {
    SwingUtilities.invokeLater(new Runnable() {

      public void run() {
        button.setText(text);
      }
    });
  }
});

Ein einfaches Beispiel mit der SwingWorker-Klasse
Java:
/*
 * So funktioniert es! Ein SwingWorker zum abarbeiten, Änderungen an der
 * GUI werden in speziellen SwingWorker-Methoden synchron zum EDT
 * ausgeführt.
 */
button.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {
    new SwingWorker<Object, String>() {

      @Override
      protected Object doInBackground() throws Exception {
        for (int i = 0; i < 20; i++) {
          try { Thread.sleep(1000); }
          catch (InterruptedException ex) {}
          publish(i + " Sekunden");
        }
        return null;
      }

      @Override
      protected void process(List<String> chunks) {
        for (String text : chunks) {
          button.setText(text);
        }
      }

      @Override
      protected void done() {
        button.setText("Fertig!");
      }
    }.execute();
  }
});
Ich hoffe, das hilft... Nähere Informationen findest Du im Sun Java™ Tutorial: Concurrency in Swing. Dies zu lesen lohnt! :rtfm:

Ebenius
 

icarus2

Top Contributor
Im Moment versteh ich es noch nicht ganz. Aber ich lese jetzt gerade mal die Lesson durch.

Bei Fragen komm ich wieder ;-)

Vielen Dank Ebenius
 

icarus2

Top Contributor
Irgendwie verstehe ich immer noch nicht, was bei mir nicht klappt.

Meine Arbeit besteht darin alle Lösungen für das N Damenrpblem auf einem n*x Schachbrett zu berechnen und die Ergebnisse grafisch darzustellen (nicht wirklich heftig, aber wir hatten nie Programmieren in der Schule, schon gar nicht Java).

Es lief alles wunderbar, ich habe den Algorithmus als kleine Herausforderung rekursiv programmiert. Um dir mein Problem zu zeigen habe ich eine primitive Swing Oberfläche erstellt mit nur wenigen Komponenten und das ganze Programm so weit abgespeckt wie nur möglich.

Das Problem ist jetzt nur, dass wenn das repaint gemacht wird, falsche Zahlen im Array f sind. So wie ich das sehe läuft die ganze for-Schleife durch, und erst dann kommt das repaint ==> falsche Werte im Array.


Das merkwürdige ist:
Beim Methodenaufruf ausgabe() werden alle Lösungen richtig ausgegeben. Bei repaint() nicht mehr.


Hier ist mal der gesamte Code:


Die Klasse, die von JFrame abgeleitet wird:
[Java]
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class AlgoGrafisch2 extends JFrame implements ActionListener {


Container c;
Schachbrett sb;

JPanel optionen;

JButton start;


AlgoGrafisch2(){
c = getContentPane();

optionen = new JPanel();

sb = new Schachbrett();


start = new JButton("Start");
start.addActionListener(this);

optionen.add(start);

c.add(optionen, BorderLayout.NORTH);
c.add(sb, BorderLayout.CENTER);


}


@Override
public void actionPerformed(ActionEvent arg0) {
sb.berechnePosition(0);

}



public static void main(String[] args) {
AlgoGrafisch2 window = new AlgoGrafisch2();
window.setTitle("Algo grafisch Test");
window.setSize(800, 500);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}
[/Java]


Die Klasse Schachbrett, die von JPanel abgeleitet ist:

[Java]
import java.awt.*;
import javax.swing.*;


public class Schachbrett extends JPanel {

int n = 13;
final int DAMEN = n; //Anzahl Damen auf dem Feld
int solutions = 0;

int[] f = new int[DAMEN];

boolean positionenBerechnet = false;


public void paintComponent(Graphics g){
super.paintComponent(g);

g.translate(50,20);

//Zeichnet das Schachbrett
//Länge des Schachbretts: 400
//Feldbreite des Schachbretts: 50
drawChessBoard(g);

//Zeichnet die Damen
//Erst wenn die positionenBerechnet true ist sollen die Damen gezeichnet werden
System.out.println(positionenBerechnet);
if(positionenBerechnet){
drawQueens(g);
}
}



//Das Schachbrett wird gezeichnet
public void drawChessBoard(Graphics g){

int x = 0;
int y = 0;

//Zeichnet die horizontalen Linen im Schachbrett
for (int i=0; i <= n; i++) {
g.drawLine(0, y, 400, y);
y+=50;
}
y = 0;
x = 0;

//Zeichnet die vertikalen Linien im Schachbrett
for (int i=0; i <= n; i++) {
g.drawLine(x, y, x, 400);
x += 50;


}
}

//Die Damen werden gezeichnet
public void drawQueens(Graphics g){

int x = 0;
int y;
g.setColor(Color.red);

for(int i = 0 ; i < f.length ; i++){

y = ( f+1 ) * 50;
g.fillOval(x, y, 20, 20);
x += 50;

System.out.println("f["+(i+1)+"] = "+(f+1));
}
}

//Die möglichen Positionen werden rekursiv aufgelistet.
//Dazu wird für jede Spale die for-Schleife durchlaufen. Ist die Dame oben am Rand
//angekommen ist die for-Schleife zu Ende und k wird automatisch zu k-1.
//Die Schleife ist dann fertig, wenn f[0] == DAMEN - 1 und die for-Schleife für alle
//folgenden Spalten durchlaufen ist.
/*
* @param
* int k steht für die Spaltenzahl auf dem Schachbrett (0 <= k < DAMEN)
*/
public void berechnePosition(int k) {
for(int s = 0; s < DAMEN; s++) {
//Dem arry f[k] wird bei jedem Durchlauf der entsprechende Wert vertikale
//Werte übergeben, damit dieser in der positionFree()-Methode verglichen
//werden kann.
f[k] = s;

//Wenn die Position frei ist
//positionFree() überprüft, ob die Position der Dame frei ist
//Wenn die Position frei ist ist der Rückgabewert true, wenn nicht false
if(positionFree(k)) {
//Wenn die letzte Spalte erreicht ist, ist eine neue Lösung bekannt
if(k == DAMEN - 1){
solutions++; //Die Anzahl Lösungen wird um 1 erhöht
positionenBerechnet = true; //positionenBerechnet wird auf true gesetzt, damit die Damen aktualisiert werden.

ausgabe(); //Gibt die Positionen in der Konsole aus
repaint(); //Ruft paintComponent() auf, damit alles notwendige neu gezeichnet wird
}

//Wenn noch nicht die letzte Spalte erreicht ist
else {
berechnePosition(k+1); //rekursiver Aufruf
}
}
}
}

/*
* Überprüft, bo die aktuelle Position der Dame nicht bedroht ist.
*
* @param
* int k, um anzugeben, an welcher horizontalen Stelle man sich gerade
* befindet ==> f[k]
*/
public boolean positionFree(int k) {
boolean posFrei = true;

//Wenn die Position bereits belegt ist, wird die boolean Variable posFree, die
//anfänglich immer true ist, auf false gesetzt und zurückgegeben
for(int i = 0; i < k; i++){
if(Math.abs( f- f[k] ) == k - i | f == f[k]) {
posFrei = false;
break;
}
}
return posFrei;
}

//Gibt alle Wörter und die Anzahl Lösungen über die Konsole aus
public void ausgabe(){
String ausgabe = "";

for(int i=0; i< f.length; i++){
ausgabe += (" "+(f+1));
}
System.out.println("Ausgbae1: "+ausgabe);
System.out.println("Anzahl Lösungen: "+ solutions);
}
}

[/Java]


Zum Code:

Die Ausschlaggebenden Methoden sind paintComponent, berechnePosition, ausgabe. Den Rest hab ich einfach mal mitgepostet, damit ihr den Code mal ausprobieren könnt, falls das nötig ist.


Ich habe2 Ideen:

1.
Ich muss die for-Schleife so lange warten lassen, bis das repaint() beendet ist. Also diese Schleife irgendwie blockieren können. Aber wie weiss ich nicht.


2.
Ich rechne zuerst alles aus, speichere das in einem weiteren 2D-Array und erst dann kommt das repaint für alle Positionen.



Gibt es Ideen oder Vorschläge wie das zu lösen wäre? Ich bin schon sehr lange vorm Rechner und hab keine gute Lösung hingebracht.
 

Ebenius

Top Contributor
Führ doch Dein Programm mal aus und drück auf den Knopf zum Berechnen. Direkt danach vergrößere mal das Fenster mit der Maus. Du wirst sehen, auch die Neuanordnung der Komponenten muss warten, bis die Berechnung fertig ist.

Der Grund liegt in Zeile 44 im ersten der beiden oberen Quelltexte. Dort reagierst Du auf einen Button-Event. Die Abarbeitung läuft im EDT. So lange Du rechnest geht kein Zeichnen, keine Event-Verarbeitung. Was musst Du tun? Du musst die Berechnung in einen anderen Thread auslagern, ansonsten blockierst Du durch Deine Berechnung den EDT. Beispiele hast Du oben (die drei von mir). Da passiert im Prinzip das gleiche. Dein Code ist so wie Beispiel 1 (geht nicht). Bau es um nach Beispiel 3 (oder 2, wenn's Dir lieber ist).

Ebenius
 

icarus2

Top Contributor
Aso, ich glaub ich verstehe jetzt, was du meinst.

Ich versuche mal die Berechnung in einem Thread unterzubringen.


Vielen Dank für die (wie immer) geniale Hifle :)
 

icarus2

Top Contributor
So, ich hab das jetzt grad mal ausprobiert. Dank deiner Hilfe hab ichs in 10min hingekriegt.


Nur 1 kurze Frage:
In deinem 2ten Beispiel verwendest du new Thread(Paramter);


Woher weisst du, wie die Parameter da angeordnet werden müssen? Findet man sowas in der API oder wie?
 

Schandro

Top Contributor
;) ja genau sowas findet man in der API. Deswegen: Immer erst in der API nachschauen, wenn man eine bestimmte Sache sucht (außer man weiss den Namen der Klasse nicht^^) und auch bei Methoden, die man verwendet aber noch nie in der API geguckt hat was sie genau machen, ist sie nützlich um bösen Überraschungen vorzubeugen.
 

icarus2

Top Contributor
Also, das mit dem Zeichnen funktioniert jetzt wunderbar :)

Ich möchte jetzt jedoch noch in einem JTextArea die Lösungen in Zahlen ausgeben. Der Code obendran hat sich zwar etwas verändert, ist vom Prinzip her aber immer noch der gleiche. Nur wird jetzt nach dem repaint() noch diese Methode aufgerufen:

[Java]
public void ausgabeLoesungen(){

final String NEUE_ZEILE = "\n";

for(int i = 0; i < 2; i++){
loesungenAusgabe.append(" "+f);

}
loesungenAusgabe.append(NEUE_ZEILE);
}
[/Java]

Wäre ja alles schön und gut... nur leider bekomme ich dabei eine NullPointerException.

Exception in thread "Thread-3" java.lang.NullPointerException
at Schachbrett.ausgabeLoesungen(Schachbrett.java:184)
at Schachbrett.berechnePosition(Schachbrett.java:228)
at Schachbrett.berechnePosition(Schachbrett.java:246)
at Schachbrett.berechnePosition(Schachbrett.java:246)
at Schachbrett.berechnePosition(Schachbrett.java:246)
at Schachbrett.berechnePosition(Schachbrett.java:246)
at Schachbrett.berechnePosition(Schachbrett.java:246)
at Schachbrett.berechnePosition(Schachbrett.java:246)
at Schachbrett.berechnePosition(Schachbrett.java:246)
at ButtonListener.run(ButtonListener.java:120)
at java.lang.Thread.run(Thread.java:619)

Hat wer ne Idee was ich da falsche mache?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
T Image wird nicht angezeigt?! - MediaTracker/repaint AWT, Swing, JavaFX & SWT 9
T Fenster wird trotz repaint() und revalidate() nicht sofort neu gezeichnet AWT, Swing, JavaFX & SWT 6
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
T repaint wird trotz Thread nicht ausgeführt AWT, Swing, JavaFX & SWT 5
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
D JUNG Repaint function does not work AWT, Swing, JavaFX & SWT 2
E repaint Probleme AWT, Swing, JavaFX & SWT 13
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
L Swing repaint() ruft paintComponent(g1d) nicht auf AWT, Swing, JavaFX & SWT 12
I Swing Verhindern, dass repaint() kaskadiert AWT, Swing, JavaFX & SWT 6
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
K Methode repaint() AWT, Swing, JavaFX & SWT 1
B Swing Wann brauche ich repaint() ? AWT, Swing, JavaFX & SWT 1
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
A repaint(); AWT, Swing, JavaFX & SWT 9
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
S 2D-Grafik repaint()-Aufruf. Und nichts geschieht. AWT, Swing, JavaFX & SWT 5
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
P JPanel und Repaint AWT, Swing, JavaFX & SWT 5
J JavaFX Automatisches Neuzeichnen ("Repaint") abstellen. AWT, Swing, JavaFX & SWT 10
F JTable Repaint Issue AWT, Swing, JavaFX & SWT 1
N Observer: update ruft nicht repaint auf AWT, Swing, JavaFX & SWT 0
C Repaint() funktioniert nicht in TabbedPanel AWT, Swing, JavaFX & SWT 5
S JList repaint AWT, Swing, JavaFX & SWT 1
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
D repaint() klappt anders als vorgestellt AWT, Swing, JavaFX & SWT 15
R Repaint() in Schleifen, Threads AWT, Swing, JavaFX & SWT 13
B Swing Repaint Problem - mal wieder AWT, Swing, JavaFX & SWT 5
P 2D-Grafik Gezielter Repaint einzelner Frames in Java-Game AWT, Swing, JavaFX & SWT 6
javampir Bei repaint nix los AWT, Swing, JavaFX & SWT 2
B Swing repaint() AWT, Swing, JavaFX & SWT 3
Ernesto95 AnimationLoop - Problem bei Aufruf von repaint AWT, Swing, JavaFX & SWT 6
P 2D-Grafik repaint(); steigender RAM Verbauch AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
S Applet Repaint AWT, Swing, JavaFX & SWT 3
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
R Swing Grafikfehler bei repaint AWT, Swing, JavaFX & SWT 2
N repaint() blockieren AWT, Swing, JavaFX & SWT 6
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
M Repaint() AWT, Swing, JavaFX & SWT 14
J Swing repaint, repaint, repaint AWT, Swing, JavaFX & SWT 8
M Applet repaint() verlangsamen AWT, Swing, JavaFX & SWT 7
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
V Applet JApplet Flackern durch Repaint AWT, Swing, JavaFX & SWT 11
kodela Problem mit repaint() AWT, Swing, JavaFX & SWT 3
N Swing Funktion repaint() updated nicht AWT, Swing, JavaFX & SWT 5
F repaint reagiert nicht AWT, Swing, JavaFX & SWT 8
S AWT Probleme mit repaint() AWT, Swing, JavaFX & SWT 2
D Repaint()? Oder was??? AWT, Swing, JavaFX & SWT 5
M Eine nicht korrekte Darstellung bei repaint() warum? AWT, Swing, JavaFX & SWT 4
T 2D-Grafik Kreis "von Hand" zeichnen -> jedesmal repaint()? AWT, Swing, JavaFX & SWT 6
R validate(), repaint funktionieren nicht! AWT, Swing, JavaFX & SWT 7
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
B Swing verschachteltes GUI: repaint() ändert mehr als nur gewünschte Component AWT, Swing, JavaFX & SWT 4
S validate(), invalidate(), repaint(),... Was kommt wann? AWT, Swing, JavaFX & SWT 5
M 2D-Grafik repaint() löscht altes Bild nicht AWT, Swing, JavaFX & SWT 2
J repaint() nicht richtig? AWT, Swing, JavaFX & SWT 6
R repaint erzwingen AWT, Swing, JavaFX & SWT 3
Zettelkasten repaint() von anderen Klassen aufrufen AWT, Swing, JavaFX & SWT 4
H repaint()-Problem - 50% CPU-Auslastung AWT, Swing, JavaFX & SWT 4
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
N Swing MainWindow(JFrame) aktualisieren(neuzeichnen) repaint AWT, Swing, JavaFX & SWT 4
T repaint() Problem AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Repaint - Alternative? AWT, Swing, JavaFX & SWT 3
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
N Swing repaint() funktioniert nicht AWT, Swing, JavaFX & SWT 5
T Swing repaint funktioniert nur manchmal? AWT, Swing, JavaFX & SWT 6
K Jpanel repaint problem (Fullscreen) AWT, Swing, JavaFX & SWT 5
V Swing Bei repaint() tut sich nichts AWT, Swing, JavaFX & SWT 7
G ColorReader, bei Fadenkreuz zeichnen mit repaint() flackern AWT, Swing, JavaFX & SWT 19
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
D Swing Actionlistener verhindert repaint?! AWT, Swing, JavaFX & SWT 2
S JLabel repaint AWT, Swing, JavaFX & SWT 8
C Swing Linux mag mein Swing-repaint() nicht... AWT, Swing, JavaFX & SWT 7
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
Luk10 repaint() auch in anderen Klassen! AWT, Swing, JavaFX & SWT 6
A repaint() zu langsam, bitte um alternativen AWT, Swing, JavaFX & SWT 5
T Überlappende Transparenz und repaint() AWT, Swing, JavaFX & SWT 10
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
O Girdbag Formatierung nach repaint verloren AWT, Swing, JavaFX & SWT 2
E Swing - repaint() AWT, Swing, JavaFX & SWT 6
E AWT Problem mit Repaint (in Loop oder Timer) AWT, Swing, JavaFX & SWT 3
O Exception bei repaint AWT, Swing, JavaFX & SWT 3
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
Dit_ Zeilenmarkierung verschwindet nach repaint() AWT, Swing, JavaFX & SWT 12
A Swing Infinite repaint loop unterbrechen AWT, Swing, JavaFX & SWT 7
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
F "Verrutschen" von Komponenten bei repaint() AWT, Swing, JavaFX & SWT 9
Junker Fensterinhalt vor ausführen von repaint komplett löschen. AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben