Erstellen eines JTable mit dem AbstractTableModel

Jedem JTable ist ein Modell zugeordnet. Sie wissen es vielleicht nicht, aber es wird standardmäßig erstellt, wenn Sie das zweidimensionale Array erstellen:

Objekt[][] data = {{1,2,3},{2,3,4},{4,5,6},{7,8,9}};
Zeichenfolge[]  title= {"Column1", "Column2", "Spalte3"};
JTable exampleJTable = neue JTable (Daten, Spaltenname)};

Glücklicherweise  Sie können das JTable-Objekt verwenden, ohne die Tabellenvorlage zu durchlaufen. Um beispielsweise die Methode der Zelle (2, 3) herauszufinden, verwenden Sie die Methode getValueAt:

System.out.println(BeispielJTable.getValueAt(2, 2));
Das JTable-Objekt erstellt eine DefaultTableModel  weil es steuert, wie die Daten in der Tabelle angezeigt werden, und die Datenverwaltung dem Tabellenmodell überlässt. Wenn das Modell nicht benutzerdefiniert ist, wird ein DefaultTableModel verwendet. Sie können überprüfen, ob dies der Fall ist, indem Sie sich das Modell aus dem model in JTable.

TableModel byDefault = exampleJTable.getModel();
System.out.println(exampleJTable.getValueAt(2, 2).toString());
Die Schnittstelle TableModel definiert, wie Daten mit JTable interagieren können. Dies erleichtert das Erstellen und Verwenden der Tabelle in Java. Sobald das Tabellenmodell mit JTable verknüpft ist, müssen Sie sich keine Gedanken mehr darüber machen, wie JTable auf die Daten zugreift. Alles, worum Sie sich kümmern müssen, ist, eine Vorlage zu erstellen und zu verwenden.

Es gibt zwei Klassen, die die Schnittstelle TableModel implementieren, DefaultTableModel und AbstractTableModel.
  • AbstractTableModel implementiert die meisten TableModel-Methoden.
  • DefaultTableModel ist eine Unterklasse von AbstractTableModel mit drei implementierten Methoden, deren Daten in einem Array gespeichert sind.
    • public int getRowCount():  Rücksendungen  die Anzahl der Zeilen.
    • public int getColumnCount(): gibt die Anzahl der Spalten zurück.
    • public Object getValueAt(int row, int column): gibt das Objekt im Feld (Zeile, Spalte) zurück.
Wählen Sie zwischen der Verwendung von AbstractTableModel oder DefaultTableModel bezieht sich auf die Daten. DefaultTableModel verwendet die Vector-Struktur. Diese Implementierung ist  Unterstützt  von Java und auch aus programmiertechnischer Sicht. Der große Teil ist  erledigt ist, müssen Sie immer noch wissen, ob diese Implementierung ein Problem für Ihre Anwendung verursacht.

Die Verwendung des AbstractTableModel bietet die Möglichkeit, die Daten frei zu speichern, aber Sie müssen die Methoden implementieren, die eine Interaktion mit JTable ermöglichen. Die Anzahl der implementierten Methoden hängt davon ab, wie die Daten verwaltet werden. Zum Lesen sind nur die 3 genannten Methoden ausreichend, aber um eine Zeile oder Spalte hinzuzufügen (hinzuzufügen, zu löschen), müssen Sie andere Methoden implementieren, um die Daten zu ändern, die in einer Vorlage der Tabelle gespeichert sind.

Erstellen eines Tabellenmodells

class Model erweitert AbstractTableModel{
private Object[][]-Daten;
privater String[]-Titel;

public Model(Object[][] data, String[] title){
this.data = data;
this.title = Titel;
}
/**
* Gibt den Spaltentitel und den Index zurück
*/
public String getColumnName(int col) {
return this.title[col];
}
/**
* Gibt die Anzahl der Spalten zurück
*/
public int getColumnCount() {
return this.title.length;
}
/**
* Gibt die Anzahl der Zeilen zurück
*/
public int getRowCount() {
return this.data.length;
}
/**
* Gibt das Objekt am Schnittpunkt von Zeile und Spalte zurück
*/
public Objekt getValueAt(int row, int col) {
return this.data[row][col];
}
/**
* Objekt am Zeilen- und Spaltenschnittpunkt ändern
*/
public void setValueAt(Objektwert, int row, int col) {
this.data[row][col] = value;
}
}
Dieser Code ordnet die Vorlage der Tabelle zu
//Erstellen des JTableJTable-Tabelle = neues JTable();
//Erstellen der Vorlage
Modell = neues Modell(Daten, Titel);
//Verknüpfen Sie die Vorlage mit JTable
table.setModel(Modell);