Обновите 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 и создайте способ обновления данных, с которых работает модель

Видя, как вы воссоздаете данные каждый раз, я бы просто выбрал второй вариант.

Другие вопросы по тегам