Swing JLabel - Text überlagert sich

Doltsche

Mitglied
Hallo zusammen

Ich stehe vor folgendem Problem:

Über einen Thread ändere ich regelmässig den Text eine JLabels, dabei überlagern sich allerdings die Texte auf dem JLabel bzw. die alten Text werden gar nicht entfernt.
Ich hoffe ihr könnt mir behilflich sein.

Freundliche Grüsse

Samuel

Java:
// ...
JLabel lbTurnMsg = new JLabel("");
add(lbTurnMsg); // JPanel
// ...    

    private void doGraphics(){
      
        // Animate Label
        lbTurnMsg.setText(textWaitAnimation.getFrame() /* returns current string */);
    }

    @Override
    public void run() {

        while(true){
            doGraphics();
            try {               
                Thread.sleep(30);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }
 
lbTurnMsg.repaint()

nach dem der Text gesetz worden ist.

Normalerweise wird die Komponente neu gezeichnet, wenn sie bewegt wird oder so.
 
Also
Code:
repaint()
sollte nicht das Problem hier sein, das muss man normalerweise nicht selbst aufrufen!
In setText vom JLabel steht das nämlich schon 😛

Viel eher würde ich mal versuchen den Call auf den GUI-Thread zu legen:
[java=16]
SwingUtilities.invokeLater(new Runnable() {
public void run() {
doGraphics();
}
});
[/code]
(anstelle von der Zeile 16)
Oder direkt den Swing-Timer zu benutzen!
 

Zurück
Oben