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)); |
TableModel byDefault = exampleJTable.getModel(); System.out.println(exampleJTable.getValueAt(2, 2).toString()); |
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.
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{Dieser Code ordnet die Vorlage der Tabelle zu
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;
}
}
//Erstellen des JTable //Erstellen der Vorlage Modell = neues Modell(Daten, Titel); //Verknüpfen Sie die Vorlage mit JTable table.setModel(Modell); |