Приклади використання jtable

Приклади використання jtable
Можливо, вам доводилося стикатися з необхідністю виведення будь-яких даних у вигляді таблиці, використовуючи Swing (Java). Найприродніший підхід - використання JTable. Але це не найзручніший компонент, оскільки базова версія не володіє належною гнучкістю, а реалізація своїх способів виведення та відображення інформації викликає певні труднощі. Тому я хочу поділиться з вами своїм досвідом роботи з JTable і привести максимально доступні для розуміння приклади. Наша мета - коректне відображення динамічних даних в JTable. Зацікавлених читачів прошу під кат.

Розробники JTable створили його по парадигмі «модель-вид-контролер». Іншими словами, це розділило JTable на частини таким чином, що одна відповідає за способи відображення інформації, інша за зовнішній вигляд, третя за отримання даних. Не будемо заглиблюватися в подробиці, кому цікаво, можете пошукати в мережі. Наше завдання розібратися на прикладах, як організувати висновок даних з будь-якої структури в таблицю. За це відповідає модель таблиці.

Найпростіший спосіб створення JTable - масив. Конструктору передається масив назв стовпців і масив значень. Все інше таблиця робить сама. Наведу приклад.

Дякую за пояснення, дуже дохідливо.
Єдине до чого довго не міг додуматися - від куди набираються дані в методі getValueAt (), класу MyTableModel. Потім зрозумів, що там проходить ітерація і значеннями виступають номера стлбцов і рядків.

Додам свої «5 копійок» в правку уроку (на більше не тягне), напевно новачкам нерви заощадить.

У цьому паттерне використовується змінна «tModel», яку не було визнано до конструктора.


// Створимо список з сутностей класу Human
humans = new ArrayList ();
humans.add (new Human ( "John", "Smith", "1231231"));
humans.add (new Human ( "George", "White", "321321312"));
humans.add (new Human ( "Olga", "Bregneva", "7171711"));
// Створимо модель таблиці
tModel = new MyTableModel (humans);
// На основі моделі, створимо нову JTable
jTabPeople = new JTable (tModel);

Оголосити змінну потрібно до конструктора:

public class JTableExample MyTableModel tModel;
// Конструктор
>

В принципі, коли писав про це не замислювався. Так як я не скинув готову програму, а просто написав статтю. Думаю, логічно, якщо змінна не оголошена - її потрібно оголосити :).

Наполовину запрацювало!
Поясніть будь ласка терміново хтось, як правильно вставити (де змінити) ось цей шматок:

/ * Додамо поле humans в нашу модель,
а так само змінимо конструктор моделі: * / ArrayList humans;
MyTableModel (ArrayList humans) super ();
this.humans = humans;
>

Розумію, що потрібно так вставляти:

public class MyTableModel extends AbstractTableModel

MyTableModel (ArrayList humans) super ();
this.humans = humans;
>
...

Але дає помилку The constructor MyTableModel () is undefined

Схожі статті