Swing Update: Laufendes GUI updaten

w0ddes

Bekanntes Mitglied
Hallo zusammen,

Ich hab hier mal wieder n komisches Problem 😉

Ich habe hier ein GUI, dass ich zur Laufzeit entweder nach ner bestimmten Zeit oder nach einem Klick updaten lassen möchte (Je nachdem was "einfacher" ist).

Die Sache ist die: ich hab 2 jLabel, die je nachdem welchen Status ein Model im Hintergrund hat ihre Hintergrundfarbe + Beschriftung ändern sollen.
Diesen Status kann ich durch RadioButtons oder 2 "normale" Buttons ODER über Befehle, die über das Netzwerk kommen ändern (-> ändern nach Zeit wäre wohl besser).

Wenn ich das ganze per ActionEvent + ActionCommands mache, funktioniert das recht gut, aber das würde dann ja mit den Befehlen per Netzwerk nicht funktionieren ...

Das ganze hab ich ohne LayoutManager (also = null) mit Eclipse und nem GUI-Editor erstellt.

Also allgemeine Frage ist: wie kann man n laufendes GUI updaten?! Hab was von JPanel und dessen Methode revalidate() gelesen.. aber das tut irgendwie auch net ..
 
Zuletzt bearbeitet von einem Moderator:
revalidate() ruft man u.a. dann auf wenn sich zur Laufzeit an der Zusammensetzung der GUI etwas geändert hat - also z.B Kompenten eingefügt oder entfernt wurden.
In Deinem Fall sind die JLabels ja bereits in der GUI enthalten, dass Du die neue Hintergrundfarbe nicht siehst liegt daran, dass JLabels standardmässig transparent sind.
per setOpaque(true) kannst Du diese Eigenschaft ändern.
 
Das mit dem opaque habe ich, denn wenn ich's per ActionEvent mache funktioniert das alles ohne Probleme. Meine Problem ist eigentlich, dass das Model auch über's Netzwerk geändert werden kann.

Meine "Idee" ist, dass man das Updaten evtl in nem Thread laufen lassen könnte und halt jede 1/10 Sekunde updatet oder so .. Nur wie könnt man sowas machen?
 
Zuletzt bearbeitet:
Dann ist es ohne Code schwer zu sagen woran es liegt. Eventuell kommt die Nachricht nicht korrekt an oder wird falsch verarbeitet...
Vielleicht kannst Du das Problem in einem KSKB nachstellen.
 
Aaaaah, ich hab ne Idee 🙂

Wenn der Befehl über's Netz kommt müsste der doch auch irgendwie ne Action feuern können bzw ne Funktion aufrufen, die die Farbe + Beschriftung ändert ..

Die Lösung kann manchmal so einfach sein .. aber nach über 6 Stunden am Coden sieht man sprichwörtlich den Wald vor lauter Bäumen nicht ..
 
Hm okay .. Idee war gut, nun scheiter ich an der Ausführung x'D

Wie kann ich ne Methode der GUI-Klasse in ner anderen Klasse benutzen? (GUI Klasse enthält die
Code:
main
Methode) ..

Kann ich in der anderen Klasse dann einfach n neues Objekt des GUI erstellen? Nein, oder? ô.o
 

Zurück
Oben