De
DefaultTableModelclass is een subklasse van de
AbstractTableModel. Zoals de naam al doet vermoeden is het het tafelmodel dat door een JTable wordt gebruikt wanneer er geen tafelmodel specifiek door de programmeur is gedefinieerd. Het DefaultTableModel slaat de gegevens voor de JTable op in een
Vectorvan
vectoren.
Hoewel de
Vectoris een oude Java-verzameling, het wordt nog steeds ondersteund en er is geen probleem met het gebruik ervan, tenzij de extra overhead veroorzaakt door het gebruik van een gesynchroniseerde verzameling een probleem is voor uw Java-toepassing.
Het voordeel van het gebruik van de
DefaultTableModelover een gewoonte
AbstractTableModelis dat u geen methoden hoeft te coderen, zoals rijen, kolommen toevoegen, invoegen of verwijderen. Ze bestaan al om de gegevens in de
Vectorvan
vectoren.Dit maakt het een snel en gemakkelijk te implementeren tafelmodel.
javax.swing.table.DefaultTableModel importeren;
De
DefaultTableModelklasse heeft zes constructeurs. Elk kan worden gebruikt om van te vullen
DefaultTableModelop verschillende manieren.
De eerste constructor neemt geen argumenten en maakt een
DefaultTableModeldie geen gegevens, nul kolommen en nul rijen heeft:
DefaultTableModel defTableModel = DefaultTableModel ();
De volgende constructor kan worden gebruikt om het aantal rijen en kolommen van een op te geven
DefaultTableModelzonder gegevens:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Er zijn twee constructors die kunnen worden gebruikt om een te maken
DefaultTableModelmet kolomnamen en een gespecificeerd aantal rijen (alle bevatten null-waarden). Men gebruikt een
Voorwerpmatrix voor de kolomnamen, de andere a
Vector:
String [] columnNames = "Kolom 1", "Kolom 2", "Kolom 3";DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);
of
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);
Ten slotte zijn er twee constructors gebruikt om de te vullen
DefaultTableModelmet rijgegevens samen met kolomnamen. Een gebruikt
Voorwerparrays, de andere
vectoren:
Object [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Kolom 1", "Kolom 2", "Kolom 3";DefaultTableModel defTableModel = DefaultTableModel (gegevens, kolomnamen);
of
Vector rowData = new Vector ();
rowData.add (1);
Vector> data = nieuwe Vector> ();
data.add (0, rowData);
Vector columnNames = new Vector ();
columnNames.add ("Kolom 1");DefaultTableModel defTableModel = DefaultTableModel (gegevens, kolomnamen);
Een rij toevoegen aan de
DefaultTableModelgebruik de
Voeg een rij toemethode samen met de rijgegevens om toe te voegen:
Object [] newRowData = 5,5,5,5;defTableModel.addRow (newRowData);
Gebruik de om een rij in te voegen
insertRowmethode, die de in te voegen rijindex en de rijgegevens specificeert:
Object [] insertRowData = 2.5,2.5,2.5.2.5;defTableModel.insertRow (2, insertRowData);
Gebruik de om een rij te verwijderen
removeRowmethode, die de te verwijderen rijindex aangeeft:
defTableModel.removeRow (0);
Gebruik de toets om een waarde in een tabelcel te krijgen
getValueAtmethode. Als de gegevens in rij 2, kolom 2 bijvoorbeeld een int bevatten:
int value = tabModel.getValueAt (2, 2);
Om een waarde in een tabelcel in te stellen
setValueAtmethode met de waarde die moet worden ingesteld samen met de rij- en kolomindex:
defTableModel.setValueAt (8888, 3, 2);
Als een
JTableis gemaakt met behulp van de constructor die een tweedimensionale array met de rijgegevens en een array met de kolomnamen krijgt doorgegeven:
Object [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Kolom 1", "Kolom 2", "Kolom 3";
JTable voorbeeldJTable = nieuwe JTable (gegevens, kolomnamen);
dan zal de volgende cast niet werken:
DefaultTableModel dft = (DefaultTableModel) voorbeeldJTable.getModel ();
Een looptijd
ClassCastExceptionzal worden gegooid omdat in dit geval de
DefaultTableModelwordt verklaard als een anonieme binnenklasse in de
JTableobject en kan niet worden gegoten. Het kan alleen worden gegoten naar de
tafelmodelkoppel. Een manier om dit te omzeilen is door er zelf een te maken
DefaultTableModelen stel het in als het model van de
JTable:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (gegevens, kolomnamen);
exampleJTable.setModel (defTableModel);
Dan de
DefaultTableModel
defTableModelkan worden gebruikt om de gegevens in de
JTable.
Om de ... te zien
DefaultTableModelbekijk in actie het voorbeeldprogramma DefaultTableModel.