Swing-Element verändern

Status
Nicht offen für weitere Antworten.

zilti

Bekanntes Mitglied
Hallo zusammen,
ich habe ein etwas komplexeres Programm.
Also, eine Funktion in der ersten Klasse ruft für einen teil der SWING-Elemente eine Funktion in einer zweiten Klasse auf. Diese gibt dann die Elemente zurück. Ein Thread soll nun eines dieser Elemente verändern. Muss ich da nun zuerst in diesem Thread die Elemente in der 2. Funktion ändern und dann in der ersten Funktion ein repaint aufrufen? Ware ein bisschen schlecht für die Performance. Oder reicht es, wenn ich durch den Thread in der ersten Klasse einfach die Funktion in der zweiten Klasse aufrufe? Oder wie sonst?
Vielen Dank!
zilti
 

zilti

Bekanntes Mitglied
Also:
Klasse 1: Hauptfenster
Klasse 2: Einige Swing-Elemente
Klasse 3: Thread, der Daten abruft
Klasse 1 ruft eine Funktion in Klasse 2 auf, welche Swing-Elemente zurückgibt.
Klasse 3, der Thread, ruft neue Daten ab für ein Element in Klasse 2.
Wie mache ich es nun, dass das Element (ein JTable) in Klasse 2 aktualisiert wird und das dann korrekt angezeigt wird?
 

Leroy42

Top Contributor
Immer noch eine sehr verwurstelte Erklärung, aber,
soweit ich das verstanden habe, lässt du dir aus der Klasse 2
die JComponent geben (JTable), änderst etwas an dessen Daten
und rufst dann eine Methode auf, dass die GUI deine Veränderungen
auch aktualisiert darstellt: Vielleicht ...fireTableDataChanged?
 

André Uhres

Top Contributor
Erstmal sollten Aktualisierungen der Swingoberfläche im "Event Dispatch Thread" geschehen .
Wenn man nicht grad im "Event Dispatch Thread" ist (SwingUtilities.isEventDispatchThread() ist false)
dann kann man mit SwingUtilities.invokeLater Aufrufe auf den "Event Dispatch Thread" schicken:
Code:
       SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                //hierhin kommt die Aktualisierung
            }
        });
JTable kann man aktualisieren indem man z.B. mit table.setModel(...) ein neues TableModel setzt.
Oder mit tableModel.setValueAt(...) oder tabelModel.addRow(..) oder was auch immer
das TableModel für Aktualisierungsmethoden hat. Wenn du das DefaultTableModel nimmst, dann ist das soweit gut.
Wenn du aber ein eigenes TableModel hast, dann musst du darauf achten, die Methoden wie setValueAt und
addRow richtig zu implementieren. Vor allem dürfen Anweisungen wie "fireTableCellUpdated" oder "fireTableRowsInserted" nicht fehlen.
Wo die JTable definiert ist (Klasse 1 oder Klasse 2) spielt eine eher untergeordnete Rolle.
Die JTable hängt ja eh nicht in der Luft, sondern ist über JPanel, JScrollPane und Ähnliches mit dem JFrame verbunden.
 

zilti

Bekanntes Mitglied
Funzt net...
fireTableCellUpdated und fireTableRowsInserted existieren nicht.
Und wie geht das mit dem invokeLater?

Code:
	public void setUserlist(String[][] data)
	{
		String[] columnNames = { "User", "Clan", "Time" };
		table = new JTable(data, columnNames);
		EventQueue.invokeLater( new Runnable() 
		{ 
		  public void run() { 
			 userscroll.add(table);
		  } 
		} );
	}

Code:
	public Component LgcLobbyContent()
	{
		JPanel content = new JPanel(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		
		//		1. Zeile, 1. Spalte, Toolbar
		c = new GridBagConstraints();
		c.gridx = 0;
		c.gridy = 0;
		c.fill = GridBagConstraints.HORIZONTAL;
		c.anchor = GridBagConstraints.PAGE_END;
		gameoptions = new JToolBar("GameOptions");
		create = new JButton("Spiel erstellen");
		join = new JButton("Beitreten");
		actualize = new JButton("Aktualisieren");
		gameoptions.add(create);
		gameoptions.add(join);
		gameoptions.add(actualize);
		gameoptions.setFloatable(false);
		content.add(gameoptions, c);
		
		
		//		TABELLENTITEL UND DATEN DEFINIEREN
		
		String[][] data = {
				{"Lyrion.ch", "Beispieleintrag"},
				{"Zeile 2", "Beispiel"}
		};
		
		String[] columnNames = { "Spalte 1", "Spalte 2" };
		
		//		TABELLE EINFÜGEN, Zeile 2, Spalte 1
		c = new GridBagConstraints();
		c.gridx = 0;
		c.gridy = 1;
		c.fill = GridBagConstraints.BOTH;
		c.weightx = 1.0;
		c.weighty = 1.0;
		table = new JTable(data, columnNames);
		content.add(new JScrollPane(table), c);
		content.setVisible(true);
		// 		AUSGABE
		return content;
	}
 

zilti

Bekanntes Mitglied
Wieso kann man den Käse von JTable nicht einfach so ändern wie jedes andere Swing-Element auch?
 

zilti

Bekanntes Mitglied
Und wieso gibt das eine NullPointerException:
Code:
	public void setUserlist(String[] data)
	{
		final String[] dat = data;
		EventQueue.invokeLater( new Runnable() 
		{ 
		  public void run() { 
			  userliste.setListData(dat);
		  } 
		} );
	}
 

zilti

Bekanntes Mitglied
Also, letzter Versuch, sonst nehm ich die Motorsäge ausm Keller und zersäge meinen Compi:
Wie fügt man neue Daten in ne JTable ein, die dann auch sichtbar werden?
 

zilti

Bekanntes Mitglied
Och mönsch, muss man dafür studiert haben?
Werds dann mal durchgehen, habe aber keine grossen Hoffnungen, das zu kapieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Swing GUI Element wird nicht skaliert AWT, Swing, JavaFX & SWT 6
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
B Swing: letztes Element wird immer auf Fenstergröße gezogen AWT, Swing, JavaFX & SWT 3
X Swing Swing Element gesucht -> um als Konsole zu fungieren AWT, Swing, JavaFX & SWT 4
H Swing [gelöst]Neues Swing Element erstellen AWT, Swing, JavaFX & SWT 4
N in jScrollPane, neues Swing Element hinzufügen AWT, Swing, JavaFX & SWT 6
V Wie heisst dieses GUI-Element? Gibt es sowas für Swing? AWT, Swing, JavaFX & SWT 10
S Swing Element für Explorer-Fenster darstellung AWT, Swing, JavaFX & SWT 13
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
RalleYTN Swing JavaFX VideoPlayer in Swing einbetten. Ich komm nicht an die Dimension des Videos! AWT, Swing, JavaFX & SWT 0
T swing läuft nur beding flüssig AWT, Swing, JavaFX & SWT 1
A Sonderzeichen bei Swing AWT, Swing, JavaFX & SWT 3
L DoubleBuffering unter Swing AWT, Swing, JavaFX & SWT 0
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
N JavaFX Umstieg von Swing auf Java FX AWT, Swing, JavaFX & SWT 6
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Plugin oder eigenes Tool mit zB SWING AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben