2013-07-11 3 views
0

Я читал форумы широко и много раз пробовал методы решения этой проблемы.Обновление данных JTable - с использованием AbstractTableModel

Проблема: Я сделал обычай AbstractTableModel, так что я могу контролировать способ отображения мои данные. Он просто хранится в String[][]. Он подключается к БД, используя JDBC для заполнения начальных данных. Итак, когда мой пользователь (через графический интерфейс Swing) ищет что-то, за кулисами я просто создаю запрос для запроса БД и возвращает ResultSet. Теперь я хочу отобразить эти новые данные на JTable.

Исследования: Я много читал о слушателях и об обновлении и вещах. Но я прочитал и перечитал их и до сих пор не совсем понял их. Когда я устанавливаю новую модель на JTable, я на самом деле хочу ХРАНИТЬ свой пользовательский AbstractTableModel, который я создал и просто обновляю данные, возможно ли это (возможно, с общедоступными методами внутри класса AbstractTableModel, который я могу создать)?

Дополнительные вопросы: Должен ли я использовать слушатель для этой функции? Нужно ли добавлять слушателей или наблюдателей?

Спасибо, я очень благодарен! Богатый

ответ

1

Исследование: Я много читаю о слушателях и об обновлениях и вещах. Но я прочитал и перечитал их и до сих пор не совсем понял их. Когда я устанавливаю новую модель в JTable, я на самом деле хочу использовать собственный настраиваемый AbstractTableModel и просто обновлять данные, возможно ли это (возможно, с помощью общедоступных методов внутри класса AbstractTableModel , который я могу создать)?

Да, это возможно. В принципе, вы должны либо ...

  1. Обеспечение функциональности в пользовательской модели таблицы для добавления и удаления строк или
  2. Построить новый экземпляр пользовательской модели таблицы, используя новые данные

Дополнительные вопросы: Должен ли я использовать прослушиватель для этой функции ? Нужно ли добавлять слушателей или наблюдателей?

Трудно сказать без контекста. Я бы сказал, вообще нет. В вашем случае, вероятно, проще создать SwingWorker, выполнить запрос базы данных и либо заполнить новую модель таблицы, либо вернуть ее из метода doInBackground, либо использовать методы для обновления существующей модели.

+0

спасибо. В вашем списке были два варианта, которыми я располагаю при работе со столами. Я все понял. –

0

.... так что я могу контролировать способ отображения мои данные

модель используется для хранения данных. В представлении (JTable) отображаются данные.

Он просто хранится в строке [] [].

Нет необходимости создавать пользовательские TableModel. Просто используйте DefaultTableModel.

Я на самом деле хочу сохранить обычай AbstractTableModel

Используйте setDataVector() метод DefaultTableModel

Смотрите Table From Database Example в разделе Get the Code.

+0

Причина, по которой я хочу сохранить свой AbstractTableModel, состоит в том, что у меня есть ряд флажков. Эта функция не предоставляется функцией DefaultTableModel. Итак, как бы вы посоветовали мне обработать обновление строк таблицы этим? –

+0

@RichieEpiscopo, да, вы можете отображать ряд флажков в JTable при использовании DefaultTableModel. Снова я подчеркну, что модель хранит данные, таблица отображает данные. Вы сохраняете логические значения в модели, затем вы переопределяете метод getColumnClass() ', чтобы вернуть соответствующий класс, а присвоенный рендер/редактор будет использоваться таблицей. – camickr

+0

Благодарим вас за помощь. Вы также прояснили мне кое-что. Я получил его сейчас! –