我创建了一个简单的JTable
,其复选框如下所示:
DefaultTableModel model = new DefaultTableModel();
jTable1.setModel(model);
model.addColumn("No:", no1);
model.addColumn("Remark", remark1);
model.addColumn("Color", colors1);
model.addColumn("Done");
TableColumn col1 = jTable1.getColumnModel().getColumn(0);
col1.setPreferredWidth(1);
TableColumn col4 = jTable1.getColumnModel().getColumn(3);
col4.setCellEditor(jTable1.getDefaultEditor(Boolean.class));
col4.setCellRenderer(jTable1.getDefaultRenderer(Boolean.class));
col4.setPreferredWidth(50);
jTable1.setShowGrid(true);
jTable1.setGridColor(Color.BLACK);
jTable1.setAutoCreateRowSorter(true);
它工作正常但如果我想为复选框添加动作侦听器该怎么办。例如,当我选中我的复选框时,我需要弹出一条确认消息。
答案 0 :(得分:9)
例如,当我勾选复选框时,我需要弹出一个 确认信息。
您无需向渲染器/编辑器添加ActionListener,但需要监听表模型数据更改。请查看Listening for Data Changes教程的How to Use Tables部分:
Boolean
且其值为true
。false
。请注意,在这种情况下,当您使用布尔值时,有两个可能的值来进行检查。但是,对于其他情况下的输入验证,所描述的过程将不起作用,因为当更改已经发生时将通知侦听器,并且您将无法再将值设置为仅因为它不再存在。< / p>
看看@ kleopatra对这个问题的回答:JTable Input Verifier。如上所述,更好的方法是提供自定义CellEditor并在stopCellEditing()方法实现中进行验证。正如建议我使用DefaultCellEditor作为参数JCheckBox并覆盖上述方法。