Swing GUI-Thread für automatisches Update nutzen

F

Frank_10001

Gast
Ich versuch gerade Daten die ich generiere irgendwie auf ein Textfeld auszugeben.

Das Problem das ich dabei habe, entweder ich muss dem generierenden Objekt eine REferenz auf das Textfeld geben um per setText die Daten zu schreiben, oder ich brauch eine Art Vermittlerklasse (Logger im eignen Thread) die das erledigt, was ich aber nicht möchte!

Ich würde viel lieber die Textfeldklasse umschreiben, damit sie sich die Daten von dem Datenobjekt selbst abholt! Ich habe es mit der paint-Methode versucht, aber durch die setText Funktion generier ich nur eine endlose Updateschleife, welche Funktion vom Textfeld kann ich also umschreiben damit ich dennnoch eine performante und schnelle Updaterate habe ohne einen zusätzlichen Thread zu starten oder meinen Datenthread mit setText aufrufen zu bremsen?

Vielleicht seh ich auch den Wald vor lauter Bäumen nicht ^^
 

Michael...

Top Contributor
Idamit sie sich die Daten von dem Datenobjekt selbst abholt!
Das hört sich nach MVC oder Observer Pattern an.
Ich habe es mit der paint-Methode versucht
Wieso die paint überschreiben?
damit ich dennnoch eine performante und schnelle Updaterate habe ohne einen zusätzlichen Thread zu starten oder meinen Datenthread mit setText aufrufen zu bremsen
Also existiert bereits ein zusätzlicher Thread zum Lesen der Daten?
 
F

Frank_10001

Gast
exakt, MVC pattern ...

aber ich weis irgendwie nicht so recht wo ich bei der GUI ansetzen soll damit ich eine halbwegs performante Übertragung der Daten aus den Datenobjekt (mit eigenen Thread) in die GUI bewerkstelligen kann. Irgendwie hab ich grad n Brett vorm Kopf ....
 
F

Frank_10001

Gast
Entschuldigung für den doppelpost ... ich mach mir nachher gleich nen Account fürs Editieren

Sorry auch für die unklare Erklärung, ich hab grad n Knoten im Hirn und hoffe auf Hilfe.

Ich wollte aber noch ergänzen, dass ich möglichst keinen Link von der GUI im Model haben will, also quasi soll die GUI sich die Daten ausschliesslich über eine API vom Model holen, aber eben möglichst ohne einen separaten Thread zu starten ich weis nur nicht wo ich da ansetzen soll!
 
F

Frank_10001

Gast
Interessante Idee, aber mit dem Aufruf des überschriebenen ModelListener würde cih mir dennoch wieeder die setText Aufrufe in den Kontext des Datenthread holen und diesen damit bremsen, was ich tunlichst vermeiden muss!

Mir ist da gerade der Gedanke gekommen einen Timer im GUI Kontext zu starten (hab ich bei Borland C++ zumindest mal so gemacht) um die Daten abzurufen, Problem dabei war irgendwann dass der Timer eine gewisse nervtötende Grundlast der GUI provozierte! Ich würde am liebsten eine ständig laufende Operation der GUI (die paint-Methode z.b.) dafür nutzen welche nur dann aktiv ist wenn ich das Objekt auch sehe, aber die setTExt-Funktion löst ja automatisch ein repaint aus und damit eine Endlossschleife :(

Wahrscheinlich muss ich eher in de sauren Apfel beissen und mir doch einen Logger mit Listener und eigenem Thread-Kontext bauen um die Daten in die GUI zu schaufeln! Auch wenn es mir missfällt da einen eigenen Thread für aufzumachen, im Load-Balancing hab ich leider keine Erfahrung!
 

Michael...

Top Contributor
Um da Empfehlungen zu geben, wüsste man genauer wissen was das werden soll und welche Voraussetzungen gegeben sind.

Du hast eine kontinuierliche Datenabfragen? Und willst danach immer einen Wert in einem JTextField aktualisieren? Ein einfaches setText(...) sollte normalerweise nicht allzu lange benötigen. Evtl.:
Java:
SwingUtilities.invokeLater(new Runnable() {
	public void run() {
		textField.setText(newValue);
	}
});

Werden dabei evtl. mehrere Strings mit "+" verkettet? Das kann durchaus auf die Performance gehen.
 

Nopileos

Neues Mitglied
so, hab mir erstmal nen Account angelegt, macht es deutlich einfacher zu editieren und Ergänzungen zu schreiben

der Gedanke mit invokeLater ist perfekt! Ich machs jetzt über einen Listener und im überschriebenen Listener mach ich es dann über invokeLater (sofern später nicht irgendwer einen dämlichen FEhler macht und OHNE invokeLater arbeitet sollte es auch gut funktionieren), so updatet er im GUI Kontext und das sogar recht häufig ohne dabei unnötig repaints auszulösen!

als ich es gelesen hatte fiel es mir auch wieder wie Schuppen von den Augen ... da arbeitet man ein Jahr lang mal mit Labview und vergisst schon die grundlegenden Mechanismen ... Ich rate jedem von Labview ab der ein Anständiges Programm erstellen will ... schlagt euch lieber mit irgendwelchen TReiberschnittstellen rum oder baut eine Schnittstelle zu Labview als das ganze Programm in LV zu schreiben!
 

lumo

Top Contributor
auch wenns etwas spät kommt...
wie wärs mit javabeans -> deine datenklassen in ein javabean umwandeln, dann einen observer den du auf deine datenklasse registierst -> dann wird bei jeder änderung in deiner datenklasse automatisch der gui mit aktualisiert...

das wird wohl performanter sein, als in einem eigenen thread alle paar sec/ms daten zu lesen und dann in das textfeld schreiben (wenn da ev. sogar noch das selbe drin steht...)

edit: wenn das gui in JFace/SWT wäre könntest du JFace Databinding verwenden... EMF ist auch einen tolle sache (hab ich aber nur mit SWT verwendet)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
sandaime Swing Thread für CMD auslesen AWT, Swing, JavaFX & SWT 16
M JProgressBar für einen Thread AWT, Swing, JavaFX & SWT 14
P thread nimmt veränderte boolean nicht AWT, Swing, JavaFX & SWT 7
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
M Server/Client thread von GUI Trennen AWT, Swing, JavaFX & SWT 2
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
H Event Handling Thread - Abruf der get-Methode AWT, Swing, JavaFX & SWT 5
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
C Thread verwalten AWT, Swing, JavaFX & SWT 2
A Swing Exception in thread "AWT-EventQueue-0" AWT, Swing, JavaFX & SWT 1
S JavaFX Exception in thread "JavaFX Application Thread" AWT, Swing, JavaFX & SWT 3
L Label im JavaFX Thread Updaten AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
J Thread per Button starten AWT, Swing, JavaFX & SWT 10
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
T JavaFX Task / Thread / FXThread Komplikationen AWT, Swing, JavaFX & SWT 5
O Swing Event Dispatch Thread AWT, Swing, JavaFX & SWT 1
L JavaFX UI Thread block AWT, Swing, JavaFX & SWT 13
X Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 AWT, Swing, JavaFX & SWT 6
E JavaFX JavaFX Application in Thread ausführen AWT, Swing, JavaFX & SWT 1
D JavaFX UI-Thread und DB-Thread trennen um z.B. Ladebalken anzuzeigen AWT, Swing, JavaFX & SWT 15
T JavaFX Controller im extra Thread AWT, Swing, JavaFX & SWT 0
T Swing 2 Thread.sleep parallel laufen lassen AWT, Swing, JavaFX & SWT 4
L Zweites Fenster mit Thread AWT, Swing, JavaFX & SWT 0
E JavaFX Stage.show() in ursprünglichem Thread starten AWT, Swing, JavaFX & SWT 7
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
C Thread-/ Simulations- Problem AWT, Swing, JavaFX & SWT 18
T Swing Button bleibt grau [=> UI hat sich aufgehängt, Aufgabe in Thread auslagern] AWT, Swing, JavaFX & SWT 3
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q GUI außerhalb GUI-Thread updaten - GUI friert ein AWT, Swing, JavaFX & SWT 18
C Thread in Klassen starten AWT, Swing, JavaFX & SWT 4
L exception in thread awt-eventqueue-0 java.lang.nullpointerexception AWT, Swing, JavaFX & SWT 2
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
D SWT SWT Elemente aus anderen Klassen aufrufen - Invalid thread access AWT, Swing, JavaFX & SWT 6
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
K Event Handling 2 Buttons und Thread stop AWT, Swing, JavaFX & SWT 3
C Swing Update von swing-TableModels per Thread. Eins geht, das andere nicht, warum? AWT, Swing, JavaFX & SWT 12
V JLabel bzw. GUI aus externen Thread ansteuern AWT, Swing, JavaFX & SWT 3
J Applet Paralleles Thread Handling AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
T Java Swing Main GUI Thread AWT, Swing, JavaFX & SWT 3
C Event Handling Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException AWT, Swing, JavaFX & SWT 43
T Table-Zeilen mit Thread einfärben AWT, Swing, JavaFX & SWT 15
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
V Nullpointerexception (etwas mit thread und jframe) AWT, Swing, JavaFX & SWT 3
P Problem Thread.sleep() und JProgressBar AWT, Swing, JavaFX & SWT 7
S SWT GUI-Thread AWT, Swing, JavaFX & SWT 11
A Thread und sleep(1000); AWT, Swing, JavaFX & SWT 7
B Swing Thread+Animation AWT, Swing, JavaFX & SWT 7
S Timer oder Thread.sleep AWT, Swing, JavaFX & SWT 3
M Exception in thread "Thread-3" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 18
B Über SWT Button Thread beenden AWT, Swing, JavaFX & SWT 2
C SWT Gui Thread hängt sich auf AWT, Swing, JavaFX & SWT 3
lumo SWT Exception in thread "main" org.eclipse.swt.SWTError: No more handles AWT, Swing, JavaFX & SWT 3
Luk10 Swing Problem mit Zeichen-Thread AWT, Swing, JavaFX & SWT 8
G 2D-Grafik Von Thread aus Zeichnen AWT, Swing, JavaFX & SWT 5
U Swing JLabel bewegen mittels Thread AWT, Swing, JavaFX & SWT 3
R JTable und Thread AWT, Swing, JavaFX & SWT 4
K Thread.sleep in GUI AWT, Swing, JavaFX & SWT 4
J Thread funktioniert nicht AWT, Swing, JavaFX & SWT 10
D JPanel mit Thread in JPanel AWT, Swing, JavaFX & SWT 4
F Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null AWT, Swing, JavaFX & SWT 5
P Teil einer Swing GUI in eigenem Thread AWT, Swing, JavaFX & SWT 4
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
O JTree/TreeModel/DefaultMutableTreeNodes thread safe machen AWT, Swing, JavaFX & SWT 3
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
F SWT table refresh per Thread AWT, Swing, JavaFX & SWT 2
V Swing remove(Component) blockiert Thread sehr lange. AWT, Swing, JavaFX & SWT 6
J AWT Artefakte bei AWT-Rendering durch parallelen Thread AWT, Swing, JavaFX & SWT 4
H Thread-Problem mit der Darstellung beim Sperren des Fensters AWT, Swing, JavaFX & SWT 2
T Event Dispatch Thread und noch ein Thread AWT, Swing, JavaFX & SWT 7
Burny91 Swing Thread mit wait() und notify() steuern AWT, Swing, JavaFX & SWT 22
N SWT - über Thread Composite erstellen und Anhängen AWT, Swing, JavaFX & SWT 6
K Vom Gui aus auf einen Thread warten AWT, Swing, JavaFX & SWT 4
X Problem bei JTextArea und Thread.sleep() AWT, Swing, JavaFX & SWT 8
F Merkwürdiges Verhalten zeichnen sperater Thread AWT, Swing, JavaFX & SWT 13
B Swing Swing und Thread.sleep() AWT, Swing, JavaFX & SWT 6
N Exception Behandlung mit setDefaultUncaughtExceptionHandler, insbesondere im EventDispatcher Thread AWT, Swing, JavaFX & SWT 4
Q Neuer Thread zum Öffnen AWT, Swing, JavaFX & SWT 2
P Swing GUI im Thread? AWT, Swing, JavaFX & SWT 5
T GUI JFrame - neuer Thread AWT, Swing, JavaFX & SWT 2
data89 Was mache ich mit "Dispatched Event Thread"/Substance falsch? AWT, Swing, JavaFX & SWT 4
0x7F800000 Allg. Frage zum ev. dispatch thread, wie korrekt auf reaktion der Listener warten? AWT, Swing, JavaFX & SWT 4
S Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 7
T thread.sleep Sprung Problem AWT, Swing, JavaFX & SWT 24
N Server mit Thread und Statusbox AWT, Swing, JavaFX & SWT 3
S Objektverhalten in einen Thread legen AWT, Swing, JavaFX & SWT 4
G JProgressBar actionPerformedMethode und SwingUI thread AWT, Swing, JavaFX & SWT 36
E Komponenten in Event Dispatch Thread erzeugen? AWT, Swing, JavaFX & SWT 4
J Thread in GUI einbauen AWT, Swing, JavaFX & SWT 2
Lony AbstractTableModel Exception in thread "AWT-EventQueue- AWT, Swing, JavaFX & SWT 3
A Ticker als Thread AWT, Swing, JavaFX & SWT 3
G Auf Ergebnis vom Thread warten AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben