jLabel von Methode aus aktualisieren

zeta23

Mitglied
Hallo,
ich bin neu bei der Java GUI Programmierung und habe ein kleines Problem. Mein Programm besteht aus 2 Klassen, in einer befindet sich die GUI, in der anderen ein Thread, welcher in regelmäßigen Abständen einen Wert von einer Datenbank ausließt und diesen mithilfe einer setter-Methode in einer Variable in der GUI Klasse speichert. Das funktioniert bis dahin auch.

Jetzt möchte ich aber diese Variable auf ein jLabel schreiben, was ich mit label.setText() probiert habe, jedoch aktualisiert das jLabel nicht den Inhalt. Ich habe es schon mit repaint() probiert, jedoch ändert sich nichts. Das label.setText() ist in einer Methode, wenn ich es in einen ActionListener von einem Button setzte, funktioniert die Aktualisierung. Wo kann mein Fehler liegen?

Vielen Dank schon im Voraus!
 
Vielen Dank für die Antworten!

Ich dachte auch schon, dass ich den UI-Thread blockieren könnte. Die Methode wird aber vom selben Thread aufgerufen, der den Wert aus der Datenbank holt. Blockiere ich das UI auch, wenn die Methode, die den Wert in das jLabel setzt, ungefähr so ausschaut:

Java:
public void setLabel(String datenbankwert) {
          
  label.setText(datenbankwert);
               
}

Oder muss ich das label.setText(datenbankwert) direkt in einem Thread ausführen?
 
Danke! Genau das ist mein Fehler. Ich wusste das mit dem EDT nicht. Kann ich trotzdem irgendwie mit einem normalen Thread das ändern? Ich habe versucht die Methode mit invokeLater() umzuschreiben, aber ich denke, dass ich etwas falsch verstehe.

Java:
public void setLabel(String datenbankwert) {

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                jLabel1.setText(datenbankwert);
            }
        });
 
    }
 

Neue Themen


Zurück
Oben