De
DefaultTableModelklass ä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
Vektorav
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
Vektorav
vektorer.Detta gör det till en snabb och enkel tabellmodell att implementera.
import javax.swing.table.DefaultTableModel;
De
DefaultTableModelklass har sex konstruktörer. Var och en kan användas för att fylla i
DefaultTableModelpå olika sätt.
Den första konstruktören tar inga argument och skapar en
DefaultTableModelsom 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
DefaultTableModelutan data:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Det finns två konstruktörer som kan användas för att skapa en
DefaultTableModelmed kolumnnamn och ett specificerat antal rader (alla innehåller nollvärden). Man använder en
Objektarray 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
DefaultTableModelmed raddata tillsammans med kolumnnamn. En används
Objektmatriser, 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);
Lägga till en rad i
DefaultTableModelAnvänd
Lägg till radmetod 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
insertRowmetod, 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
removeRowmetod, specificera radindex att radera:
defTableModel.removeRow (0);
För att få ett värde i en tabellcell använder du
getValueAtmetod. 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
setValueAtmetod med det värde som ska ställas in tillsammans med rad- och kolumnindex:
defTableModel.setValueAt (8888, 3, 2);
Om en
JTableskapas 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
ClassCastExceptionkommer att kastas eftersom i detta fall
DefaultTableModelförklaras som en anonym inre klass i
JTableobjekt och kan inte kastas. Det kan bara kastas till
TableModelgränssnitt. En väg runt detta är att skapa din egen
DefaultTableModeloch ange att den ska vara modellen för
JTable:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, kolumnnamn);
exampleJTable.setModel (defTableModel);
Sedan
DefaultTableModel
defTableModelkan användas för att manipulera data i
JTable.
Att se
DefaultTableModeli aktion titta på exempelprogrammet DefaultTableModel.