Prezentare generală a DefaultTableModel

DefaultTableModel
clasa este o subclasa a
AbstractTableModel
. După cum sugerează și numele, acesta este modelul de tabel care este folosit de un tabel JT atunci când niciun model de tabel nu este definit în mod specific de programator. DefaultTableModel stochează datele pentru JTable într-un
Vector
de
Vectorii
.

desi

Vector
este o colecție Java moștenită, aceasta este în continuare acceptată și nu există nicio problemă cu folosirea ei, cu excepția cazului în care cheltuielile suplimentare generate de utilizarea unei colecții sincronizate sunt o problemă pentru aplicația dvs..

Avantajul utilizării

DefaultTableModel
peste un obicei
AbstractTableModel
nu trebuie să codificați metodele precum adăugarea, inserarea sau ștergerea rândurilor și coloanelor. Există deja pentru a schimba datele deținute în
Vector
de
Vectorii.
Acest lucru îl face un model de masă rapid și ușor de implementat.

Declarație de import

import javax.swing.table.DefaultTableModel; 

constructorilor

DefaultTableModel
clasa are șase constructori. Fiecare poate fi utilizat pentru a popula
DefaultTableModel
în diverse feluri.

Primul constructor nu ia argumente și creează un

DefaultTableModel
care nu are date, zero coloane și zero rânduri:
DefaultTableModel defTableModel = DefaultTableModel (); 

Următorul constructor poate fi utilizat pentru a specifica numărul de rânduri și coloane ale unui

DefaultTableModel
fara date:
DefaultTableModel defTableModel = DefaultTableModel (10, 10); 

Există doi constructori care pot fi folosiți pentru a crea un

DefaultTableModel
cu nume de coloană și un număr specificat de rânduri (toate conținând valori nule). Unul folosește un
Obiect
tablou pentru a reține numele coloanelor, celălalt a
Vector
:
String [] columnNames = "Coloana 1", "Coloana 2", "Coloana 3";
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);

sau

DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10); 

În sfârșit, există doi constructori folosiți pentru popularea

DefaultTableModel
cu date de rând împreună cu numele coloanelor. Unul folosit
Obiect
matricile, celălalt
Vectorii
:
Obiect [] [] date = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Coloana 1", "Coloana 2", "Coloana 3";
DefaultTableModel defTableModel = DefaultTableModel (date, nume de coloană);

sau

Vector rowData = Vector nou ();
rowData.add (1);
Vector> date = nou Vector> ();
data.add (0, rândData);
Vector columnNames = new Vector ();
columnNames.add ("Coloana 1");
DefaultTableModel defTableModel = DefaultTableModel (date, nume de coloană);

Metode utile

Pentru a adăuga un rând la

DefaultTableModel
folosește
addRow
metoda împreună cu datele de rând pentru a adăuga:
Obiect [] newRowData = 5,5,5,5;
defTableModel.addRow (newRowData);

Pentru a insera un rând, folosiți butonul

insertRow
metoda, specificând indexul de rând pe care trebuie să îl inserați și datele rândului:
Obiect [] insertRowData = 2,5, 2,55,2.5,2.5;
defTableModel.insertRow (2, insertRowData);

Pentru a șterge un rând, utilizați tasta

removeRow
metoda, specificând indicele de rând care se șterge:
defTableModel.removeRow (0); 

Pentru a obține o valoare într-o celulă de tabel, utilizați

getValueAt
metodă. De exemplu, dacă datele din rândul 2, coloana 2 conțin o int:
valoarea int = tabModel.getValueAt (2, 2); 

Pentru a seta o valoare într-o celulă de tabel

setValueAt
metoda cu valoarea de setat împreună cu indexul rând și coloană:
defTableModel.setValueAt (8888, 3, 2); 

Sfaturi de utilizare

În cazul în care un

JTable
este creat folosind constructorul care a trecut un tablou bidimensional care conține datele rândului și un tablou care conține numele coloanelor:
Obiect [] [] date = 1,1,1, 2,2,2, 3,3,3, 4,4,4;
String [] columnNames = "Coloana 1", "Coloana 2", "Coloana 3";
JTable exampleJTable = JTable nou (date, nume de coloană);

atunci următoarea distribuție nu va funcționa:

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

Un timp de rulare

ClassCastException
va fi aruncat pentru că în acest caz
DefaultTableModel
este declarată clasă interioară anonimă în
JTable
obiect și nu poate fi turnat. Poate fi aruncat numai la
TableModel
interfață. O modalitate în acest sens este să-ți creezi propria ta
DefaultTableModel
și setați-l să fie modelul
JTable
:
JTable exampleJTable = JTable new ();
DefaultTableModel defTableModel = new DefaultTableModel (date, columnNames);
exampleJTable.setModel (defTableModel);

Apoi

DefaultTableModel
defTableModel
poate fi folosit pentru a manipula datele din
JTable
.

Pentru a vedea

DefaultTableModel
în acțiune aruncați o privire la programul DefaultTableModel Exemple.