Il
DefaultTableModelclass è 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
Vettoredi
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
DefaultTableModeloltre un'usanza
AbstractTableModelnon è necessario codificare metodi come aggiungere, inserire o eliminare righe e colonne. Esistono già per modificare i dati conservati in
Vettoredi
Vettori.Questo lo rende un modello di tabella facile e veloce da implementare.
import javax.swing.table.DefaultTableModel;
Il
DefaultTableModella classe ha sei costruttori. Ciascuno può essere utilizzato per popolare il
DefaultTableModelin diversi modi.
Il primo costruttore non accetta argomenti e crea a
DefaultTableModelche 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
DefaultTableModelsenza dati:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Esistono due costruttori che possono essere utilizzati per creare un
DefaultTableModelcon nomi di colonna e un numero specificato di righe (tutte contenenti valori null). Uno usa un
Oggettoarray 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
DefaultTableModelcon i dati delle righe insieme ai nomi delle colonne. Uno usato
Oggettoarray, 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);
Per aggiungere una riga a
DefaultTableModelUsa il
Aggiungi rigametodo insieme ai dati della riga da aggiungere:
Object [] newRowData = 5,5,5,5;defTableModel.addRow (newRowData);
Per inserire una riga utilizzare il
insertRowmetodo, 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
removeRowmetodo, specificando l'indice di riga da eliminare:
defTableModel.removeRow (0);
Per ottenere un valore in una cella di tabella, utilizzare il
getValueAtmetodo. 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
setValueAtmetodo con il valore da impostare insieme all'indice di riga e colonna:
defTableModel.setValueAt (8888, 3, 2);
Se una
JTableviene 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
ClassCastExceptionverrà lanciato perché in questo caso il file
DefaultTableModelè dichiarato come classe interna anonima nel
JTableoggetto e non può essere lanciato. Può essere lanciato solo su
TableModelinterfaccia. Un modo per aggirare questo è creare il tuo
DefaultTableModele impostarlo come modello del
JTable:
JTable exampleJTable = new JTable ();
DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);
exampleJTable.setModel (defTableModel);
Poi il
DefaultTableModel
defTableModelpuò essere usato per manipolare i dati nel file
JTable.
Per vedere il
DefaultTableModelin azione dai un'occhiata al programma di esempio DefaultTableModel.