Zum Inhalt springen

JTable aktualisieren


Jana_

Empfohlene Beiträge

Hallo, ich habe bereits das Forum durchsucht und komme leider einfach nicht weiter.

Ich erstelle in der einer meiner Klassen die JTable.

String[] columnNames = {"test","test1"};

Object[][] data = {};

JTable table = new JTable(data, columnNames);

JScrollPane scrollPane = new JScrollPane(table);

table.setFillsViewportHeight(true);

table.setEnabled(false);

mainPanel.add(scrollPane);

Schön, das funzt logischerweise Prima. In einer anderen Klasse erstelle ich nun aus bestimmten eingelesenen Daten ein 2-dimensionales Array welches nun den neuen Tabelleninhalt darstellen soll.

Ich habe gelesen, dass die Sache mit fireTableChanged() funktionieren soll, aber das gibt es für eine normale JTable ja nicht. Hat jemand einen Tipp für mich oder ein ganz simples Beispiel? Wie gesagt, ich will nur den Inhalt durch das Array ersetzten nichts weiter.

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm, soweit ich weiss, haben alle Nachkommen von AbstractTableModel, also auch DefaultTableModel, die Methode fireTableDataChanged(), die Du dann aufrufen kannst.

Du solltest Dir nur eine Referenz auf Dein TableModel behalten, also in etwa so:


String[] columnNames = {"test","test1"};

Object[][] data = {};

[color=red]DefaultTableModel model = new DefaultTableModel(data, columnNames);

JTable table = new JTable(model);[/color]

JScrollPane scrollPane = new JScrollPane(table);

table.setFillsViewportHeight(true);

table.setEnabled(false);

Dann kannst Du bequem Dein Array mit Werten füllen und per:

model.fireTableDataChanged() mitteilen, dass die Table komplett neu gezeichnet werden muss.

Aber denk dran, dass Object[][] data auch wirklich korrekt instanziiert ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, ich habe das Problem nun gelöst, allerdings ohne fireTableDataChanged().

Hier mal mein Code:

private static DefaultTableModel model = new DefaultTableModel();

String[] columnNames = {};

Object[][] data = {};

model.setDataVector(data, columnNames);

JTable table = new JTable(model);

JScrollPane scrollPane = new JScrollPane(table);

und dann halt noch die Methode zum neuSchreiben in der selben Klasse:

public static void neueTabelle(String[][] _neueWerte)

{

String[] columnNames = {"Wert1","Wert2","Wert3","Wert4"};

model.setDataVector(_neueWerte, columnNames);

}

Bearbeitet von Jana_
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...