Panoramica DefaultTableModel

Il

DefaultTableModel
class è una sottoclasse di
AbstractTableModel
. Come suggerisce il nome, è il modello di tabella utilizzato da una tabella JT quando nessun modello di tabella è definito in modo specifico dal programmatore. DefaultTableModel memorizza i dati per la JTable in a
Vettore
di
Vettori
.

sebbene il

Vettore
è una raccolta Java legacy ancora supportata e non vi è alcun problema con l'utilizzo a meno che l'overhead aggiuntivo causato dall'utilizzo di una raccolta sincronizzata non sia un problema per l'applicazione Java.

Il vantaggio di usare il

DefaultTableModel
oltre un'usanza
AbstractTableModel
non è necessario codificare metodi come aggiungere, inserire o eliminare righe e colonne. Esistono già per modificare i dati conservati in
Vettore
di
Vettori.
Questo lo rende un modello di tabella facile e veloce da implementare.

Dichiarazione di importazione

import javax.swing.table.DefaultTableModel; 

Costruttori

Il

DefaultTableModel
la classe ha sei costruttori. Ciascuno può essere utilizzato per popolare il
DefaultTableModel
in diversi modi.

Il primo costruttore non accetta argomenti e crea a

DefaultTableModel
che non ha dati, zero colonne e zero righe:
DefaultTableModel defTableModel = DefaultTableModel (); 

Il costruttore successivo può essere utilizzato per specificare il numero di righe e colonne di a

DefaultTableModel
senza dati:
DefaultTableModel defTableModel = DefaultTableModel (10, 10); 

Esistono due costruttori che possono essere utilizzati per creare un

DefaultTableModel
con nomi di colonna e un numero specificato di righe (tutte contenenti valori null). Uno usa un
Oggetto
array per contenere i nomi delle colonne, l'altro a
Vettore
:
String [] columnNames = "Column 1", "Column 2", "Column 3";
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);

o

DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10); 

Infine ci sono due costruttori usati per popolare il file

DefaultTableModel
con i dati delle righe insieme ai nomi delle colonne. Uno usato
Oggetto
array, l'altro
Vettori
:
Object [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Column 1", "Column 2", "Column 3";
DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

o

Vector rowData = new Vector ();
rowData.add (1);
Vettore> dati = nuovo vettore> ();
data.add (0, rowData);
Vector columnNames = new Vector ();
columnNames.add ("Column 1");
DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

Metodi Utili

Per aggiungere una riga a

DefaultTableModel
Usa il
Aggiungi riga
metodo insieme ai dati della riga da aggiungere:
Object [] newRowData = 5,5,5,5;
defTableModel.addRow (newRowData);

Per inserire una riga utilizzare il

insertRow
metodo, specificando l'indice di riga da inserire e i dati della riga:
Object [] insertRowData = 2.5,2.5,2.5,2.5;
defTableModel.insertRow (2, insertRowData);

Per eliminare una riga utilizzare il

removeRow
metodo, specificando l'indice di riga da eliminare:
defTableModel.removeRow (0); 

Per ottenere un valore in una cella di tabella, utilizzare il

getValueAt
metodo. Ad esempio, se i dati nella riga 2, la colonna 2 contiene un int:
valore int = tabModel.getValueAt (2, 2); 

Per impostare un valore in una cella di tabella

setValueAt
metodo con il valore da impostare insieme all'indice di riga e colonna:
defTableModel.setValueAt (8888, 3, 2); 

Suggerimenti per l'uso

Se una

JTable
viene creato utilizzando il costruttore a cui viene passato un array bidimensionale contenente i dati della riga e un array contenente i nomi delle colonne:
Object [] [] data = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Column 1", "Column 2", "Column 3";
JTable exampleJTable = new JTable (data, columnNames);

quindi il cast seguente non funzionerà:

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

Un'autonomia

ClassCastException
verrà lanciato perché in questo caso il file
DefaultTableModel
è dichiarato come classe interna anonima nel
JTable
oggetto e non può essere lanciato. Può essere lanciato solo su
TableModel
interfaccia. Un modo per aggirare questo è creare il tuo
DefaultTableModel
e impostarlo come modello del
JTable
:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);
exampleJTable.setModel (defTableModel);

Poi il

DefaultTableModel
defTableModel
può essere usato per manipolare i dati nel file
JTable
.

Per vedere il

DefaultTableModel
in azione dai un'occhiata al programma di esempio DefaultTableModel.