Wie, ein JTable / JPanel / JContentPane aktualisieren?

smartin123

Mitglied
Hallo Zusammen,

gleich vorweg, ich habe schon die Foren- und Googlesuche verwendet. Es gibt viele Themen zum "Aktualisieren von Komponenten", aber leider konnte ich mein Problem noch nicht lösen.

Ich habe folgende Struktur, (von unten nach oben):

Model (Enthält Daten über Datenvector)

JTable (Model wird hinzugefügt und Renderer um verschiedene Object hinzuzufügen z.B. Ampeln über Renderer)
über:
model = new MyDefaultTableModel();
jTable = new JTable(model);
jTable.getColumn("Sub").setCellRenderer(new TrafficLightRenderer()); <<-- das ist der Renderer um Objekte hinzuzufügen

JPanel ( enthält JScrollpane und dort ist die JTable)
JWindow (Hauptfenster enthält einige andere Buttons und das JPanel)

Es ist eine Datenbank im Hintergrund, wo Daten über einen FileParser eingelesen werden können. Diese Daten werden dann von der Datenbank in die JTable geschrieben.

Ziel soll sein, nach dem FileEinlesen, ein Update auf das JPanel oder JContentPane oder JTable durchzuführen?

Nach dem Einlesen, wurde die GUI bereits instanziert und die JTable ist leer.

Ich habe schon viel versucht, z.B. die JTable(Model) zu aktualiseren:
model.fireTableDataChanged();
model.fireTableStructureChanged();

oder auch jContentPane neu instanziert.

Alles ohne Erfolg

Ich habe 0 Ahnung, wie ich das erreichen kann.

Über jegliche Antworten würde ich mich freuen

MfG
 
Ich konnte es jetzt lösen und es war im nachhinein nicht so schwer.

Folgende Dinge musste man Durchführen um ein JPanel incl. JTable innerhalb eines JFrames zu aktualisieren:

//erstmal die vorhande ScrollPane entfernen
this.remove(jScrollPane);
// diese gleich null setzen, weil beim anlegen, auf null geprüft wird und nur dann eine neue angelegt werden kann
jScrollPane = null;
// jTable ebenfalls auf null setzten
jTable = null;
// neue ScrollPane Objekte holen, hier werden auch ScrollPane und JTable(+Model, usw...) neu instanziert und mit this der ContentPane hinzugefügt
this.add(getJScrollPane());
// "Aktualisiert die Bildschirmdarstellung des Containers und aller in ihm enthaltenen Komponenten." zitiert von Java API
this.validate();
// neues Zeichnen aller Komponenten
this.repaint();

und ich kann diese Methoden nach dem Einlesen mit Hilfe des FileParsers aufrufen und habe eine aktuelle JTable.
Übrigens ist auf der GUI ein Button mit dem ich ebenfalls jetzt über diesen Weg die JTable update.

Ob diese Vorgehensweise sinnvoll ist, weiß ich nicht.
Wenn noch jemand einen anderen Vorschlag hat, nur her damit. :)

vg
ManInBlack
 
Zurück