【发布时间】:2016-07-03 00:47:20
【问题描述】:
加载时,我的 JTable 有 2 列 - .所以它在第一列是一个字符串,在第二列是一个复选框。当我点击复选框时,tableChanged 被触发,我可以打印被选中的行数据。
当用户在下拉列表中选择新类别时,我需要更改表格数据。 当表数据更新时,我单击复选框 tableChanged 不再被触发。 这就是我所拥有的: 这就是我更新表格数据的方式:
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String t = (String) comboBox.getSelectedItem();
if (t.equals("survey2")) {
String[] columnNames = { "Volume Name", "Select" };
Object[][] data = { { "pt1", false }, { "pt2", false },
{ "pt3", false }, { "pt4", false },
};
model = new DefaultTableModel(data, columnNames);
table.setModel(model);
}
}
});
这是我的tableChanged:
table.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if ((Boolean)table.getModel().getValueAt(table.getSelectedRow(), 1)) {
System.out.println(">\t"
+ table.getValueAt(table.getSelectedRow(), 0));
} else {
System.out.println(">\t"
+ table.getValueAt(table.getSelectedRow(), 0));
}
}
});
我不明白为什么更新模型后没有触发事件。我是否错误地更新了表格?
【问题讨论】:
标签: java swing jtable defaulttablemodel