Обновите JTable, когда я нажимаю кнопку
В моем приложении я добавил JTabel и, используя метод setCellRender, добавляю столбец кнопки в таблицу следующим образом.
jTable1 = new JTable();
String[] columnNames = {"Module", "Status", "Connectivity", "Action", "Start Time", "Logs"};
data = getServerExecutions();
model = new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int col) {
return true;
}
};
jTable1.setModel(model);
jTable1.getColumn("Action").setCellRenderer(new ButtonRenderer());
jTable1.getColumn("Action").setCellEditor(new ButtonEditor(new JCheckBox()));
Метод getSeverExecution загружает данные из таблицы базы данных. Когда я нажимаю кнопку "Действие", база данных обновляется без проблем. Также в окне есть кнопка Обновить. В рамках метода выполняемых действий я переназначаю данные на переменные и обновляю таблицу.
public void actionPerformed(ActionEvent e) {
data = getServerExecutions();
model.fireTableDataChanged();
}
но данные таблицы не перезагружаются. Только когда я закрываю и открываю окно, оно обновляется. что тут не так?? Может кто-нибудь, пожалуйста, помогите мне..
1 ответ
Эта строка:
data = getServerExecutions();
Не устанавливает данные в таблице. Он просто устанавливает переменную данных, чтобы указывать на новые данные. Вам необходимо обновить TableModel
вместо. Для этого либо:
- Вызовите соответствующие методы для вашей модели
- Создайте новую модель и установите эту модель в JTable
- или расширьте DefaultTableModel и создайте способ обновления данных, с которых работает модель
Видя, как вы воссоздаете данные каждый раз, я бы просто выбрал второй вариант.