Обновите JTable, когда я нажимаю кнопку - PullRequest
1 голос
/ 09 марта 2011

В моем приложении я добавил 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 Ответ

2 голосов
/ 09 марта 2011

Эта строка:

data = getServerExecutions(); 

Не устанавливает данные в таблице.Он просто устанавливает переменную данных, чтобы указывать на новые данные.Вам нужно обновить TableModel вместо этого.Для этого либо:

  • вызовите соответствующие методы для вашей модели
  • Создайте новую модель и задайте эту модель в JTable
  • или расширьте DefaultTableModel и создайтеспособ обновления данных, с которых работает модель:

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

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