Java – TableModel și DefaultTableModel (Programare, Java, Leagăn, Jtable, Tablemodel, Defaulttablemodel)

marca a intrebat.

Am petrecut ceva timp încercând să găsesc o modalitate de a adăuga un nou rând la un JTable, inițial căutând metode pe următorul model:

TableModel model = new DefaultTableModel(data, tabs);

Cu toate acestea, câteva căutări rapide m-au condus la descoperirea faptului că metoda addRow se afla în clasa DefaultTableModel. Prin urmare, schimbarea acesteia în următorul model a avut succes:

DefaultTableModel model = new DefaultTableModel(data, tabs);

Cu toate acestea, am creat multe programe de succes în care am avut o matrice pre-construită folosind TabelModel, așa că sunt puțin confuz cu privire la motivul pentru care a trebuit să trec la DefaultTableModel pentru a obține această soluție și dacă există un motiv și un scop pentru fiecare? De exemplu: Este în regulă să folosesc pur și simplu un TabelModel cu o matrice pre-construită și de ce implementarea mea de mai sus a TableModel nu vine cu metode de adăugare de noi date?

Vă mulțumim!

Comentarii

  • TableModel este o interfață, DefaultTableModel este o implementare concretă, care, printre altele, oferă o modalitate convenabilă de a adăuga rânduri. –  > Por tenorsax.
  • @Niles, motivul pentru care model nu vine cu metodele începe cu metodele în linie: TableModel model = new DefaultTableModel(data, tabs); . model ar trebui să fie turnat în DefaultTableModel pentru ca metodele să fie implementate în clasa castată. În orice instanțiere a acelui tip va trebui să distribuiți obiectul dacă adăugați metode care nu se află în clasa implementată. –  > Por Sebastian.
1 răspunsuri
Hovercraft plin de anghile

Dacă trebuie să folosești propria colecție ca nucleu pentru modelul tău de tabel, atunci așa să fie, dar atunci vei dori să extinzi AbstractTableModel și să creezi propria metodă addRow care adaugă datele în model, și (iată partea critică) să se declanșează metoda corespunzătoare de notificare a modificării datelor din AbstractTableModel.

Comentarii

  • DefaultTableModel este un ghid util pentru corespunzătoare. –  > Por trashgod.
  • AbstractTableModel oferă o mulțime de lucruri pe care fiecare TableModel trebuie să aibă, dar codul în sine nu este foarte interesant (cum ar fi gestionarea ascultătorilor). Este o clasă la îndemână pentru a pune la bază o JTable pe propriile date. Utilizați-o. –  > Por Jakub Zaverka.