Я пытаюсь использовать JTable для обновления пользователей в приложении Java SWING, в настоящее время, когда я редактирую ячейку, результаты редактирования могут быть получены только в том случае, если я щелкну другую ячейку, таким образом запустив tableModelListener. Я хочу иметь возможность получать эти измененные значения для события кнопки, не нажимая другие ячейки.
Мои определения таблицы:
DefaultTableModel tableModel = new DefaultTableModel();
table = new JTable(tableModel);
tableModel.addColumn("Key");
tableModel.addColumn("Value");
if (PatientView.getSelected() != null){
tableModel.addRow(new Object[]{"Name", PatientView.getSelected().getName()});
tableModel.addRow(new Object[]{"Age", PatientView.getSelected().getAge()});
tableModel.addRow(new Object[]{"Height", PatientView.getSelected().getHeight()});
tableModel.addRow(new Object[]{"Weight", PatientView.getSelected().getWeight()});
tableModel.addRow(new Object[]{"BMI", PatientView.getSelected().getCalculatedBMI()});
}
Слушатель таблицы
tableModel.addTableModelListener(new TableModelListener(){
@Override
public void tableChanged(TableModelEvent arg0) {
int row = arg0.getFirstRow();
int column = arg0.getColumn();
Object data = tableModel.getValueAt(0, 1);
System.out.println(data);
}
});
Слушатель действия кнопки
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Vector data = tableModel.getDataVector();
System.out.println(table.getValueAt(0, 1));
System.out.println(data);
}
});