Java SWING アプリケーションでユーザーを更新するために JTable を使用しようとしています。現在、セルを編集するときに、別のセルをクリックして 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);
}
});