DefaultTableModelclasa 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
Vectorde
Vectorii.
desi
Vectoreste 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
DefaultTableModelpeste un obicei
AbstractTableModelnu trebuie să codificați metodele precum adăugarea, inserarea sau ștergerea rândurilor și coloanelor. Există deja pentru a schimba datele deținute în
Vectorde
Vectorii.Acest lucru îl face un model de masă rapid și ușor de implementat.
import javax.swing.table.DefaultTableModel;
DefaultTableModelclasa are șase constructori. Fiecare poate fi utilizat pentru a popula
DefaultTableModelîn diverse feluri.
Primul constructor nu ia argumente și creează un
DefaultTableModelcare 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
DefaultTableModelfara date:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Există doi constructori care pot fi folosiți pentru a crea un
DefaultTableModelcu nume de coloană și un număr specificat de rânduri (toate conținând valori nule). Unul folosește un
Obiecttablou 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
DefaultTableModelcu date de rând împreună cu numele coloanelor. Unul folosit
Obiectmatricile, 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ă);
Pentru a adăuga un rând la
DefaultTableModelfolosește
addRowmetoda î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
insertRowmetoda, 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
removeRowmetoda, 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
getValueAtmetodă. 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
setValueAtmetoda cu valoarea de setat împreună cu indexul rând și coloană:
defTableModel.setValueAt (8888, 3, 2);
În cazul în care un
JTableeste 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
ClassCastExceptionva fi aruncat pentru că în acest caz
DefaultTableModeleste declarată clasă interioară anonimă în
JTableobiect și nu poate fi turnat. Poate fi aruncat numai la
TableModelinterfață. 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
defTableModelpoate fi folosit pentru a manipula datele din
JTable.
Pentru a vedea
DefaultTableModelîn acțiune aruncați o privire la programul DefaultTableModel Exemple.