Das
DefaultTableModelclass ist eine Unterklasse der
AbstractTableModel. Wie der Name schon sagt, wird dieses Tabellenmodell von einer JTable verwendet, wenn vom Programmierer kein Tabellenmodell speziell definiert wurde. Das DefaultTableModel speichert die Daten für die JTable in einem
Vektorvon
Vektoren.
Obwohl die
VektorEs handelt sich um eine ältere Java-Sammlung, die weiterhin unterstützt wird, und es gibt kein Problem bei der Verwendung, es sei denn, der durch die Verwendung einer synchronisierten Sammlung verursachte zusätzliche Overhead ist ein Problem für Ihre Java-Anwendung.
Der Vorteil der Verwendung der
DefaultTableModelüber einen Brauch
AbstractTableModelIst, dass Sie keine Methoden wie Hinzufügen, Einfügen oder Löschen von Zeilen und Spalten codieren müssen. Sie sind bereits vorhanden, um die in der Datenbank gespeicherten Daten zu ändern
Vektorvon
Vektoren.Dies macht es zu einem schnell und einfach zu implementierenden Tabellenmodell.
import javax.swing.table.DefaultTableModel;
Das
DefaultTableModelKlasse hat sechs Konstruktoren. Jeder kann verwendet werden, um von der zu füllen
DefaultTableModelauf veschiedenen Wegen.
Der erste Konstruktor akzeptiert keine Argumente und erstellt eine
DefaultTableModeldie keine Daten, keine Spalten und keine Zeilen enthält:
DefaultTableModel defTableModel = DefaultTableModel ();
Mit dem nächsten Konstruktor kann die Anzahl der Zeilen und Spalten von a angegeben werden
DefaultTableModelohne Daten:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Es gibt zwei Konstruktoren, mit denen ein. Erstellt werden kann
DefaultTableModelmit Spaltennamen und einer angegebenen Anzahl von Zeilen (alle mit Nullwerten). Man benutzt eine
ObjektArray zur Aufnahme der Spaltennamen, das andere a
Vektor:
String [] columnNames = "Spalte 1", "Spalte 2", "Spalte 3";DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);
oder
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);
Schließlich gibt es zwei Konstruktoren, mit denen das gefüllt wird
DefaultTableModelmit Zeilendaten zusammen mit Spaltennamen. Eins benutzt
ObjektArrays, die andere
Vektoren:
Objekt [] [] Daten = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Spalte 1", "Spalte 2", "Spalte 3";DefaultTableModel defTableModel = DefaultTableModel (Daten, Spaltennamen);
oder
Vektor rowData = new Vector ();
rowData.add (1);
Vector> data = new Vector> ();
data.add (0, rowData);
Vector columnNames = new Vector ();
columnNames.add ("Column 1");DefaultTableModel defTableModel = DefaultTableModel (Daten, Spaltennamen);
Hinzufügen einer Zeile zu
DefaultTableModelbenutze die
Zeile hinzufügenMethode zusammen mit den hinzuzufügenden Zeilendaten:
Object [] newRowData = 5,5,5,5;defTableModel.addRow (newRowData);
Verwenden Sie zum Einfügen einer Zeile die
insertRowMethode, die den einzufügenden Zeilenindex und die Zeilendaten angibt:
Object [] insertRowData = 2.5,2.5,2.5,2.5;defTableModel.insertRow (2, insertRowData);
Um eine Zeile zu löschen, verwenden Sie die
removeRowMethode, die den zu löschenden Zeilenindex angibt:
defTableModel.removeRow (0);
Um einen Wert in einer Tabellenzelle zu erhalten, verwenden Sie den
getValueAtMethode. Wenn die Daten in Zeile 2, Spalte 2 beispielsweise ein int enthalten:
int value = tabModel.getValueAt (2, 2);
So legen Sie einen Wert in einer Tabellenzelle fest
setValueAtMethode mit dem Wert, der zusammen mit dem Zeilen- und Spaltenindex festgelegt werden soll:
defTableModel.setValueAt (8888, 3, 2);
Wenn ein
JTablewird mit dem Konstruktor erstellt, dem ein zweidimensionales Array mit den Zeilendaten und ein Array mit den Spaltennamen übergeben wird:
Objekt [] [] Daten = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Spalte 1", "Spalte 2", "Spalte 3";
JTable exampleJTable = new JTable (data, columnNames);
dann wird die folgende Besetzung nicht funktionieren:
DefaultTableModel dft = (DefaultTableModel) exampleJTable.getModel ();
Eine Laufzeit
ClassCastExceptionwird geworfen, weil in diesem Fall die
DefaultTableModelwird als anonyme innere Klasse in der deklariert
JTableObjekt und kann nicht gegossen werden. Es kann nur an die gegossen werden
TableModelSchnittstelle. Ein Weg, dies zu umgehen, besteht darin, Ihre eigenen zu erstellen
DefaultTableModelund setze es als das Modell der
JTable:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);
exampleJTable.setModel (defTableModel);
Dann ist die
DefaultTableModel
defTableModelkann verwendet werden, um die Daten in der zu manipulieren
JTable.
Zu sehen
DefaultTableModelIn Aktion sehen Sie sich das DefaultTableModel-Beispielprogramm an.