Один большой запрос или пара маленьких для JTable? - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь разработать какую-нибудь Java-программу, которая отображает содержимое базы данных MySQL в JTable. Я не знаю, что лучше: загрузить всю таблицу в вектор, а затем поместить из нее данные для каждой ячейки таблицы. Или загрузить каждую ячейку как отдельный запрос?

public class DBTableMode extends AbstractTableModel {   
...        
Vector<Vector<Object>> data = dao.getWholeData(); //my getter of whole data table
...
public Object getValueAt(int rowIndex, int columnIndex) {
        data.elementAt(rowIndex).elementAt(columnIndex);
}
...

OR

public class DBTableMode extends AbstractTableModel {
...
public Object getValueAt(int rowIndex, int columnIndex) {
        dao.getCell(rowIndex, columnIndex);

}
...

На самом деле я не знаю принцип работы JTable, если он загружает данные при прокрутке, тогда второй вариант намного лучше. Итак, что лучше в моем случае?

1 Ответ

2 голосов
/ 13 марта 2012

Трудно превзойти удобство DefaultTableModel, но AbstractTableModel предлагает большую гибкость по сравнению с внутренним представлением данных. Я бы использовал что-то более новое и без накладных расходов на синхронизацию Vector. Этот пример использует Map<String, String>. В любом случае, инкапсулируя выбор внутри TableModel, вы сохраняете возможность изменить свое решение по мере развития программы.

Также рассмотрим SwingWorker, показанный здесь , чтобы построить модель в фоновом режиме.

JTable сам по себе является только представлением. Его рендеринг довольно эффективен уже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...