DefaultTableModel - Übersicht

Das

DefaultTableModel
class 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
Vektor
von
Vektoren
.

Obwohl die

Vektor
Es 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
AbstractTableModel
Ist, 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
Vektor
von
Vektoren.
Dies macht es zu einem schnell und einfach zu implementierenden Tabellenmodell.

Import-Anweisung

import javax.swing.table.DefaultTableModel; 

Konstruktoren

Das

DefaultTableModel
Klasse hat sechs Konstruktoren. Jeder kann verwendet werden, um von der zu füllen
DefaultTableModel
auf veschiedenen Wegen.

Der erste Konstruktor akzeptiert keine Argumente und erstellt eine

DefaultTableModel
die 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

DefaultTableModel
ohne Daten:
DefaultTableModel defTableModel = DefaultTableModel (10, 10); 

Es gibt zwei Konstruktoren, mit denen ein. Erstellt werden kann

DefaultTableModel
mit Spaltennamen und einer angegebenen Anzahl von Zeilen (alle mit Nullwerten). Man benutzt eine
Objekt
Array 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

DefaultTableModel
mit Zeilendaten zusammen mit Spaltennamen. Eins benutzt
Objekt
Arrays, 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);

Nützliche Methoden

Hinzufügen einer Zeile zu

DefaultTableModel
benutze die
Zeile hinzufügen
Methode zusammen mit den hinzuzufügenden Zeilendaten:
Object [] newRowData = 5,5,5,5;
defTableModel.addRow (newRowData);

Verwenden Sie zum Einfügen einer Zeile die

insertRow
Methode, 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

removeRow
Methode, die den zu löschenden Zeilenindex angibt:
defTableModel.removeRow (0); 

Um einen Wert in einer Tabellenzelle zu erhalten, verwenden Sie den

getValueAt
Methode. 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

setValueAt
Methode mit dem Wert, der zusammen mit dem Zeilen- und Spaltenindex festgelegt werden soll:
defTableModel.setValueAt (8888, 3, 2); 

Anwendungstipps

Wenn ein

JTable
wird 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

ClassCastException
wird geworfen, weil in diesem Fall die
DefaultTableModel
wird als anonyme innere Klasse in der deklariert
JTable
Objekt und kann nicht gegossen werden. Es kann nur an die gegossen werden
TableModel
Schnittstelle. Ein Weg, dies zu umgehen, besteht darin, Ihre eigenen zu erstellen
DefaultTableModel
und setze es als das Modell der
JTable
:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);
exampleJTable.setModel (defTableModel);

Dann ist die

DefaultTableModel
defTableModel
kann verwendet werden, um die Daten in der zu manipulieren
JTable
.

Zu sehen

DefaultTableModel
In Aktion sehen Sie sich das DefaultTableModel-Beispielprogramm an.