Slyh: Tabelle neu laden

Beitrag lesen

Hallo,

JTable jtable = new JTable(Object[][] rowData, Object[] columnNames)

Zu einem späteren Zeitpunkt möchte ich dieselbe Tabelle aber mit dem inzwischen geänderten Object[][] laden.

Die Daten der JTable befinden sich in einem Model. Konkret handelt es
sich dabei um eine Klasse, die javax.swing.table.TableModel implementiert.
JTable verwendet von Haus aus javax.swing.table.DefaultTableModel.

Du hast 2 Möglichkeiten:

1. Du weist der JTable eine neue TabelModel-Instanz zu. Hierfür mußt
   du die Methode JTable.setModel(Model) verwenden.
   Lege beispielweise ein neues DefaultTableModel-Objekt an. Es steht
   ein Konstruktor zur Verfügung, der die Zelleninhalte und die
   Spaltennamen aufnimmt. (Genau wie der Konstruktor von JTable.)
   Übergib dieses Objekt der setModel-Methode.

2. Da du (jetzt) weißt, daß JTable eine Instanz von DefaultTableModel
   als Model verwendet, kannst du dir mit der Methode JTable.getModel()
   dieses Objekt geben lassen, es nach DefaultTableModel casten und
   dann die Methode DefaultTableModel.setDataVector(Object[][], Object[])
   dazu verwenden, um die Daten im Model festzulegen.
   Wenn du sicher gehen willst, daß wirklich ein DefaultTableModel-
   Objekt als Model verwendet wird, kannst du das Model auch nach dem
   erzeugen der JTable von Hand setzen. Etwa so (ungetestet!):
       DefaultTableModel dtm   = new DefaultTableModel(data, columns);
       JTable            table = new JTable(dtm);
   So könntest du dir auch gleich das Model (dtm) in einer Instanz-
   variable speichern und müßtest dann nicht immer JTable.getModel()
   aufrufen um an das Model zu kommen.

Falls dir die Geschichte mit dem Model spanisch vorkommt, würde ich
dir ein Java-Buch deiner Wahl (am besten http://www.javabuch.de oder
http://www.galileocomputing.de/openbook/javainsel3/), sowie die Tutorials
von Sun zum Thema (Links findest du in der API-Doku zu JTable und
TableModel) und den Java Almanach (http://javaalmanac.com/egs/?) empfehlen.

Gruß
Slyh