DefaultTableModel Overzicht

De

DefaultTableModel
class 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
Vector
van
vectoren
.

Hoewel de

Vector
is 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

DefaultTableModel
over een gewoonte
AbstractTableModel
is dat u geen methoden hoeft te coderen, zoals rijen, kolommen toevoegen, invoegen of verwijderen. Ze bestaan ​​al om de gegevens in de
Vector
van
vectoren.
Dit maakt het een snel en gemakkelijk te implementeren tafelmodel.

Importverklaring

javax.swing.table.DefaultTableModel importeren; 

constructors

De

DefaultTableModel
klasse heeft zes constructeurs. Elk kan worden gebruikt om van te vullen
DefaultTableModel
op verschillende manieren.

De eerste constructor neemt geen argumenten en maakt een

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

DefaultTableModel
zonder gegevens:
DefaultTableModel defTableModel = DefaultTableModel (10, 10); 

Er zijn twee constructors die kunnen worden gebruikt om een ​​te maken

DefaultTableModel
met kolomnamen en een gespecificeerd aantal rijen (alle bevatten null-waarden). Men gebruikt een
Voorwerp
matrix 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

DefaultTableModel
met rijgegevens samen met kolomnamen. Een gebruikt
Voorwerp
arrays, 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);

Handige methoden

Een rij toevoegen aan de

DefaultTableModel
gebruik de
Voeg een rij toe
methode 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

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

removeRow
methode, die de te verwijderen rijindex aangeeft:
defTableModel.removeRow (0); 

Gebruik de toets om een ​​waarde in een tabelcel te krijgen

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

setValueAt
methode met de waarde die moet worden ingesteld samen met de rij- en kolomindex:
defTableModel.setValueAt (8888, 3, 2); 

Gebruikstips

Als een

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

ClassCastException
zal worden gegooid omdat in dit geval de
DefaultTableModel
wordt verklaard als een anonieme binnenklasse in de
JTable
object en kan niet worden gegoten. Het kan alleen worden gegoten naar de
tafelmodel
koppel. Een manier om dit te omzeilen is door er zelf een te maken
DefaultTableModel
en 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
defTableModel
kan worden gebruikt om de gegevens in de
JTable
.

Om de ... te zien

DefaultTableModel
bekijk in actie het voorbeeldprogramma DefaultTableModel.