在Java Swing中,我创建了一个JTable
,它使用了扩展DefaultTableModel
的表模型类。由于表的一行的值是布尔类型,因此这些值显示为复选框。由于我想添加到这些复选框的项侦听器类,我需要初始化每个复选框。但是,如果这些是由表模型自动创建的,我该怎么办?
答案 0 :(得分:2)
由于这些CheckBox更改了基础数据,因此添加TableModelListener
并对该列的tableChanged
事件作出反应就足够了。
jTable1.getModel().addTableModelListener(new TableModelListener() {
final int YOUR_BOOLEAN_COLUMN = 1;
public void tableChanged(TableModelEvent e) {
if(e.getColumn() == YOUR_BOOLEAN_COLUMN) {
// get value from model (not affected if user re-orders columns)
TableModel tableModel = jTable1.getModel();
Boolean value =
(Boolean)tableModel.getValueAt(e.getFirstRow(), YOUR_BOOLEAN_COLUMN);
System.out.println(value);
}
}
});
答案 1 :(得分:1)
简短的回答是,您无法将ActionListeners添加到表中的JCheckbox中,原因有两个:
我认为要问为什么你需要这些事件是很重要的?您给出的答案将反映出最佳方法。
如果要允许用户编辑复选框的状态,最好的方法可能是覆盖TableModel.isCellEditable(int, int)
以对Checkbox列返回true,然后在TableModel更新时简单地更新原始数据。 / p>