HELP: JFieldText dynamisch setzen -> langsam

A

ATAMAN

Gast
Hallo Leute,

ich habe folgendes Problem: Ich habe eine GUI geschrieben, die einen externen Prozess überwacht. Die Oberfläche besteht aus mehreren Tabs. Auf einem Tab werden in mehreren JTextFields die aktuellen Daten des Prozesses angezeigt (also dynamisch gesetzt mit setText()). Wenn man die anderen Tabs auswählt läuft die GUI schnell, sobald man aber den mit den Textfeldern auswählt wird die GUI sichtbar langsam. Die Daten werden nicht alle auf ein Mal gesetzt, sondern erst wenn ein Datensatz empfangen wurde, werden die entsprechenden Textfelder gesetzt. Ich habe die Methode die Daten verarbeitet und setzt in einem SwingWorker laufen lassen, das hat aber nichts gebracht.

Hat jemand eine Idee, woran das liegen kann? Gibt es andere Möglichkeiten die Daten zu setzen, ohne das die GUI langsamer wird?

Vielen Dank im Voraus!
 
C

Camino

Gast
Die Daten werden nicht alle auf ein Mal gesetzt, sondern erst wenn ein Datensatz empfangen wurde, werden die entsprechenden Textfelder gesetzt.

Vielleicht liegt es einfach daran, dass die Daten verzögert empfangen werden. Dann werden sie natürlich auch verzögert in die Textfelder gesetzt.
 
A

ATAMAN

Gast
Naja, die Daten werden permanent empfangen und gesetzt auch dann, wenn der Tab nicht ausgewählt wurde. Die GUI wird aber nur langsam, wenn eben nur dieser ausgewählt ist. In den Textfeldern werden nur die Werte angezeigt, unten in einem Feld, das immer sichtbar ist, werden noch zusätzliche Informationen angezeigt. Und da kann man es gut sehen, dass diese dann langsamer kommen, wenn man den Tab auswählt. Die Tastatureingaben oder Mausklicks werden auch verzögert empfangen.
 
C

Camino

Gast
Zeig doch mal den Code mit dem Setzen. Eigentlich dürfte das alleine noch nicht zu der Verzögerung führen.
 
A

ATAMAN

Gast
Also, Zeile, die ich auskommentiert habe und wo die GUI dann auch schnell lief ist halt die Standard-Set-Methode:

Java:
((JTextField)child).setText(val);

child - das entsprechende Textfeld
val - der Wert als String

Es sind insgesamt 53 Textfelder. Kann es an der Menge liegen?
 
C

Camino

Gast
Es sind insgesamt 53 Textfelder. Kann es an der Menge liegen?

Schon möglich. Aber ist bestimmt eher ein Problem mit EDT und Datenübertragungsmethode, was sich evtl. gegenseitig blockiert. Du hattest ja schon geschrieben, dass du einen SwingWorker eingesetzt hattest und es trotzdem noch so langsam lief. Vielleicht ist da irgendwas bei der Aktualisierung der GUI nicht richtig. Ich denke schon, dass du das mit einem eigenen Thread machen solltest, also eben mit dem SwingWorker.
 

Bernd Hohmann

Top Contributor
Anscheinend wird das JTextField zu schnell und zu oft mit Daten beliefert (das Neuzeichnen des Textes dauert halt etwas).

Eine schnelle Abhilfe ist manchmal, erst nachzuschauen ob sich der Text überhaupt geändert hat und nur dann neu setzen:

Code:
  jtmp = ((JTextField)child);
  if ( ! jtmp.getText().equals(val)) jtmp.setText(val);

Nächste Variante wäre, einen kleinen Zähler mitlaufen zu lassen und nur jedes 10te/25te etc.. Update abzugreifen.

Bernd
 
A

ATAMAN

Gast
Anscheinend wird das JTextField zu schnell und zu oft mit Daten beliefert (das Neuzeichnen des Textes dauert halt etwas).
Bernd

Das war eigentlich auch meine Vermutung, war mir aber nicht sicher. Den SwingWorker habe ich auch nicht mehr rausgenommen. Die Daten werden zwei Mal pro Sekunde gesendet und eigentlich wollte ich sie noch öfter senden lassen. Gibt es vielleicht eine Möglichkeit dieses Neuzeichnen zu beschleunigen? Vielleicht mit anderen Swing-Komponenten? Neugezeichnen wird es ja nur wenn der Tab auch aktiviert wurde oder?
 
A

ATAMAN

Gast
Das awt-Textfield ist nativ vom OS (oder war es jedenfalls mal), ebenso java.awt.Label.

Ja, super! Mit dem awt-Textfield geht es wirklich schneller. Ich hätte nicht gedacht, dass es so einen großen Unterschied machen würde. Gibt es eine Möglichkeit den Text im awt-Textfield mittig zu platzieren?

Ich sage schon mal allen VIELEN DANK!

Falls aber jemand noch Ideen oder Lösungsvorschläge hat, so würde mich das weiterhin interessieren, ob man das Problem auch mit JTextField lösen kann. Danke.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Help on FX 2.x AWT, Swing, JavaFX & SWT 4
D AWT Netzwerkadresse generieren! Help?! AWT, Swing, JavaFX & SWT 35
G Dynamic Help mit SWT/JFace AWT, Swing, JavaFX & SWT 5
D Zoom problem!!! (brauche screenshot...) plz help thx AWT, Swing, JavaFX & SWT 7
W JavaFX Farben dynamisch anpassen AWT, Swing, JavaFX & SWT 4
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
A Swing JPanels dynamisch untereinander einfügen AWT, Swing, JavaFX & SWT 3
Wurstsemmel SWT MenuItem dynamisch hinzufügen AWT, Swing, JavaFX & SWT 2
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
MaxG. Swing Dynamisch grafische Objekte erzeugen AWT, Swing, JavaFX & SWT 12
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
S CombinedDomainXYPlot und dynamisch hinzugefügte subplots: Darstellungsprobleme AWT, Swing, JavaFX & SWT 3
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
llabusch JavaFX Dynamisch alles vergrößern (wie im Browser) AWT, Swing, JavaFX & SWT 3
agent47 JavaFX TreeView Struktur dynamisch einlesen AWT, Swing, JavaFX & SWT 1
D JavaFX Dynamisch erzeugte Buttons sollen Code ausführen. AWT, Swing, JavaFX & SWT 2
D JavaFX Dynamisch erzeugte Checkboxen aus VBox auslesen AWT, Swing, JavaFX & SWT 3
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
I JTable dynamisch aus ArrayList befüllen AWT, Swing, JavaFX & SWT 3
T JavaFX Flexible Layouts dynamisch erstellen / Design-Inspirationen AWT, Swing, JavaFX & SWT 8
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
T JPanel dynamisch erstellen AWT, Swing, JavaFX & SWT 4
G FormLayout dynamisch wachsend AWT, Swing, JavaFX & SWT 0
T JTable dynamisch mit ArrayList AWT, Swing, JavaFX & SWT 2
A Swing Logikaufgabe: Zeilenanzahl einer JTable mit 3d String dynamisch anpassen AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane in JPanel - Breite dynamisch, Höhe fix - wie? AWT, Swing, JavaFX & SWT 2
P TableViewerColumn dynamisch erzeugen AWT, Swing, JavaFX & SWT 3
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
C Swing CardLayout dynamisch erweitern AWT, Swing, JavaFX & SWT 11
B Link eines Icons dynamisch gestalten AWT, Swing, JavaFX & SWT 2
P ScrollPane nach zeichnen dynamisch resize AWT, Swing, JavaFX & SWT 7
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
P Gifs dynamisch auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E Breite eines JButton dynamisch ändern AWT, Swing, JavaFX & SWT 3
P Swing Dynamisch zeichnen mit Shapes wie Rectangle2D.Float ? AWT, Swing, JavaFX & SWT 6
C SWT - widget dynamisch erzeugen und anzeigen AWT, Swing, JavaFX & SWT 10
C Tooltip dynamisch setzen AWT, Swing, JavaFX & SWT 7
T Elemente zu JList dynamisch hinzufügen AWT, Swing, JavaFX & SWT 4
X jTextFields dynamisch initialisieren AWT, Swing, JavaFX & SWT 2
A Swing Dynamisch Objekte erzeugen AWT, Swing, JavaFX & SWT 3
L Label dynamisch awt AWT, Swing, JavaFX & SWT 2
H Swing Symbol in Taskleiste dynamisch aus- bzw. einblenden AWT, Swing, JavaFX & SWT 14
B JTabbedPane mit Enumeration dynamisch füllen AWT, Swing, JavaFX & SWT 5
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
D Panels Dynamisch zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 2
J Java 2D - dynamisch zeichnen AWT, Swing, JavaFX & SWT 4
A AWT HSB-Farben dynamisch berechnen AWT, Swing, JavaFX & SWT 5
P Dynamisch Sortieren AWT, Swing, JavaFX & SWT 2
B Swing Dynamisch Elemente in JScrollPane hinzufügen AWT, Swing, JavaFX & SWT 6
Airwolf89 Swing Dynamisch auf Objekte in einer GUI zugreifen AWT, Swing, JavaFX & SWT 10
Airwolf89 Swing Tabs dynamisch ausblenden AWT, Swing, JavaFX & SWT 3
H Swing Register (jTabbedPane) dynamisch hinzufügen? AWT, Swing, JavaFX & SWT 7
Airwolf89 Swing Anzahl der Tabellenspalten dynamisch setzen AWT, Swing, JavaFX & SWT 2
S SWT WizardPage - Button anzeigen und Text-Widgets dynamisch aktualisieren AWT, Swing, JavaFX & SWT 12
R JLabel und JSlider dynamisch erzeugen? AWT, Swing, JavaFX & SWT 3
W Swing dynamisch Buttons in JEditorPane erstellen AWT, Swing, JavaFX & SWT 2
Pithecanthropus Swing JPanels dynamisch austauschen AWT, Swing, JavaFX & SWT 8
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
Spot84 jtable mit checkboxnode dynamisch per arraylist füllen AWT, Swing, JavaFX & SWT 8
bugmenot Dynamisch erzeugte jLabels werden nicht angezeigt. AWT, Swing, JavaFX & SWT 5
ABstraCT JCombobox dynamisch füllen (erstes Element Problem) AWT, Swing, JavaFX & SWT 4
J JLabels usw. dynamisch anlegen AWT, Swing, JavaFX & SWT 8
A JList dynamisch vergrößern AWT, Swing, JavaFX & SWT 4
G Felder dynamisch erzeugen! AWT, Swing, JavaFX & SWT 3
I Textfields dynamisch erzeugen AWT, Swing, JavaFX & SWT 4
G Dynamisch Komponenten in einem JPanel bzw JFram austauschen AWT, Swing, JavaFX & SWT 7
B JTree dynamisch aufbauen AWT, Swing, JavaFX & SWT 3
L JPanel dynamisch zuweisen AWT, Swing, JavaFX & SWT 5
T Inhalt einer Combobox dynamisch erstellen? AWT, Swing, JavaFX & SWT 13
S JTextField-Größe dynamisch an Inhalt anpassen. AWT, Swing, JavaFX & SWT 3
S Farben eienr JTextPane dynamisch zuweisen AWT, Swing, JavaFX & SWT 2
J Zugriff auf "dynamisch erzeugte" JTextFields AWT, Swing, JavaFX & SWT 2
D Systray-Icon dynamisch zeichnen AWT, Swing, JavaFX & SWT 8
B JTree dynamisch nachladen AWT, Swing, JavaFX & SWT 3
U Label Icon dynamisch belegen AWT, Swing, JavaFX & SWT 12
F JRadioButton dynamisch benennen? AWT, Swing, JavaFX & SWT 7
A dynamisch weitere jpanels untereinander hinzufügen AWT, Swing, JavaFX & SWT 10
S dynamisch erzeugte buttons AWT, Swing, JavaFX & SWT 22
J Größe einer JTextArea dynamisch anpassen. AWT, Swing, JavaFX & SWT 2
F Komponente dynamisch erzeugen AWT, Swing, JavaFX & SWT 4
M ImageObserver, Bild dynamisch erzeugen und Speichern AWT, Swing, JavaFX & SWT 24
M gezeichnete Punkte dynamisch verschieben mit mousedragged AWT, Swing, JavaFX & SWT 4
S inhalt dynamisch erzeugter JComboBoxs auslesen AWT, Swing, JavaFX & SWT 3
G Mousecursor selber dynamisch generieren. AWT, Swing, JavaFX & SWT 6
G JRadioButton dynamisch erzeugen AWT, Swing, JavaFX & SWT 6
M Look and Feels dynamisch abfragen AWT, Swing, JavaFX & SWT 13
S Columnname dynamisch verändern AWT, Swing, JavaFX & SWT 2
H JComboBoxen dynamisch erzeugen AWT, Swing, JavaFX & SWT 3
K toolbar dynamisch erzeugen AWT, Swing, JavaFX & SWT 2
L Komponenten dynamisch erkennen und bearbeiten AWT, Swing, JavaFX & SWT 8
H große mengen an jbuttons dynamisch erzeugen? AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben