Dezvoltatorii JTable l-au creat în paradigma "model-view-controller". Cu alte cuvinte, a împărțit JTable-ul în părți, astfel încât cineva este responsabil pentru modul în care informațiile sunt afișate, altul pentru aspect, cel de-al treilea pentru obținerea datelor. Nu vom intra în detalii, cine este interesat, puteți căuta în rețea. Sarcina noastră este să înțelegem exemplele de organizare a rezultatelor de la o structură la o tabelă. Modelul de masă este responsabil pentru acest lucru.
Cel mai simplu mod de a crea un JTable este un matrice. Constructorul primește o serie de nume de coloane și o serie de valori. Orice altceva face masa în sine. Voi da un exemplu.
Mulțumesc pentru explicații, foarte inteligibil.
Singurul lucru pe care nu l-am putut da seama mult timp - de unde sunt date datele în metoda getValueAt (), clasa MyTableModel. Apoi mi-am dat seama că iterarea se desfășura, iar numerele coloanelor și liniilor erau valorile.
Voi adăuga "5 copeici" la corectarea lecției (nu mai trage), sigur că noii veniți își vor salva nervii.
În acest model, se folosește variabila "tModel", care nu a fost declarată înainte de constructor.
// Creați o listă din entitățile clasei umane
oameni = noul ArrayList ();
humans.add (noul om ("John", "Smith", "1231231"));
humans.add (noul om ("George", "White", "321321312"));
humans.add (noul Om ("Olga", "Bregneva", "7171711"));
// Creați un model de tabel
tModel = noul model MyTable (oameni);
// Pe baza modelului, creați un nou JTable
jTabPeople = noul JTable (tModel);
Declarați variabila în fața constructorului:
clasa publică JTableExample MyTableModel tModel;
// Constructor
>
În principiu, când am scris despre asta, nu m-am gândit la asta. Din moment ce nu am aruncat programul finit, tocmai am scris un articol. Cred că este logic dacă variabila nu este declarată - trebuie anunțată :).
Jumatate castigat!
Explicați, vă rugăm, urgent pe cineva, cât de corect să inserați aici (unde să schimbați) aici această piesă:
/ * Adăugați câmpul uman la modelul nostru,
și, de asemenea, să modifice constructorul de model: * / ArrayList
MyTableModel (ArrayList
this.humans = oameni;
>
Am înțeles că trebuie să încorporați:
clasa publica MyTableModel extinde AbstractTableModel
MyTableModel (ArrayList
this.humans = oameni;
>
...
Dar dă eroare Constructorul MyTableModel () este nedefinit