StandardTableModel-översikt

De

DefaultTableModel
klass är en underklass av
AbstractTableModel
. Som namnet antyder är det tabellmodellen som används av en JTable när ingen tabellmodell definieras specifikt av programmeraren. StandardTableModel lagrar data för JTable i en
Vektor
av
vektorer
.

Även om

Vektor
är en äldre Java-samling som det fortfarande stöds och det finns inget problem med att använda den om inte den extra omkostnad som orsakas av att använda en synkroniserad samling är ett problem för din Java-applikation.

Fördelen med att använda

DefaultTableModel
över en anpassad
AbstractTableModel
är du inte behöver koda metoderna som att lägga till, infoga eller ta bort rader och kolumner. De finns redan för att ändra data som finns i
Vektor
av
vektorer.
Detta gör det till en snabb och enkel tabellmodell att implementera.

Importmeddelande

import javax.swing.table.DefaultTableModel; 

konstruktörer

De

DefaultTableModel
klass har sex konstruktörer. Var och en kan användas för att fylla i
DefaultTableModel
på olika sätt.

Den första konstruktören tar inga argument och skapar en

DefaultTableModel
som inte har några data, noll kolumner och noll rader:
DefaultTableModel defTableModel = DefaultTableModel (); 

Nästa konstruktör kan användas för att ange antalet rader och kolumner i a

DefaultTableModel
utan data:
DefaultTableModel defTableModel = DefaultTableModel (10, 10); 

Det finns två konstruktörer som kan användas för att skapa en

DefaultTableModel
med kolumnnamn och ett specificerat antal rader (alla innehåller nollvärden). Man använder en
Objekt
array för att hålla kolumnnamnen, den andra a
Vektor
:
String [] columnNames = "Kolumn 1", "Kolumn 2", "Kolumn 3";
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);

eller

DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10); 

Slutligen finns det två konstruktörer som används för att fylla

DefaultTableModel
med raddata tillsammans med kolumnnamn. En används
Objekt
matriser, den andra
vektorer
:
Objekt [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Kolumn 1", "Kolumn 2", "Kolumn 3";
DefaultTableModel defTableModel = DefaultTableModel (data, kolumnnamn);

eller

Vector rowData = ny vektor ();
rowData.add (1);
Vektor> data = ny vektor> ();
data.add (0, rowData);
Vektorkolumnnamn = ny vektor ();
columnNames.add ("Kolumn 1");
DefaultTableModel defTableModel = DefaultTableModel (data, kolumnnamn);

Användbara metoder

Lägga till en rad i

DefaultTableModel
Använd
Lägg till rad
metod tillsammans med raddata för att lägga till:
Objekt [] newRowData = 5,5,5,5;
defTableModel.addRow (newRowData);

För att infoga en rad använder du

insertRow
metod, specificera radindex att infoga och raddata:
Objekt [] insertRowData = 2.5,2.5,2.5,2.5;
defTableModel.insertRow (2, insertRowData);

För att radera en rad använder du

removeRow
metod, specificera radindex att radera:
defTableModel.removeRow (0); 

För att få ett värde i en tabellcell använder du

getValueAt
metod. Om till exempel data i rad 2 innehåller kolumn 2 en int:
int-värde = tabModel.getValueAt (2, 2); 

För att ställa in ett värde i en tabellcell

setValueAt
metod med det värde som ska ställas in tillsammans med rad- och kolumnindex:
defTableModel.setValueAt (8888, 3, 2); 

Tips om användning

Om en

JTable
skapas med hjälp av konstruktören som passerar en tvådimensionell matris som innehåller raddata och en matris som innehåller kolumnnamnen:
Objekt [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Kolumn 1", "Kolumn 2", "Kolumn 3";
JTable exampleJTable = new JTable (data, columnNames);

då fungerar följande rollspel inte:

DefaultTableModel dft = (DefaultTableModel) exempelJTable.getModel ();

En körtid

ClassCastException
kommer att kastas eftersom i detta fall
DefaultTableModel
förklaras som en anonym inre klass i
JTable
objekt och kan inte kastas. Det kan bara kastas till
TableModel
gränssnitt. En väg runt detta är att skapa din egen
DefaultTableModel
och ange att den ska vara modellen för
JTable
:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, kolumnnamn);
exampleJTable.setModel (defTableModel);

Sedan

DefaultTableModel
defTableModel
kan användas för att manipulera data i
JTable
.

Att se

DefaultTableModel
i aktion titta på exempelprogrammet DefaultTableModel.