De
DefaultTableModel
klass är en underklass av
AbstractTableModel
. Som namnet antyder är det tabellmodellen som används av a
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 det stöds fortfarande 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
importera javax.swing.table. DefaultTableModel;
konstruktörer
De
DefaultTableModel
klass har sex
. 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
:
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
:
eller
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:
För att infoga en rad använder du
insertRow
metod, specificera radindex att infoga och raddata:
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:
då fungerar följande rollspel inte:
En körtid
ClassCastException
kommer att kastas eftersom i detta fall
DefaultTableModel
förklaras som en
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
:
Sedan
DefaultTableModel
defTableModel
kan användas för att manipulera data i
JTable
.
Att se
DefaultTableModel
i aktion titta på
.