我创建了一个简单的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);
它工作正常,但如果我想为复选框添加操作侦听器该怎么办。例如,当选中我的复选框时,我需要弹出一条确认消息。
例如,当选中我的复选框时,我需要弹出一个
确认消息。
您不需要添加动作监听器 http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html渲染器/编辑器,但您需要监听表模型数据更改。看看监听数据变化 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#modelchange的部分如何使用表格 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html教程:
- 添加新的表模型监听器 http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TableModelListener.html给你的表模型 http://docs.oracle.com/javase/7/docs/api/javax/swing/table/TableModel.html
- 验证更新的单元格值是否为
Boolean
它的值为true
.
- 要求用户确认更新。如果他/她不这样做,则将单元格的值设置回
false
.
- See 表模型事件 API http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TableModelEvent.html以及。
Edit
请注意,在这种情况下,当您使用布尔值时,有 2 个可能的值可以进行检查。然而,对于其他情况下的输入验证,所描述的过程将不起作用,因为监听器将在更改已经发生时收到通知,并且您将无法仅因为该值不再存在而将其设置回来。
看看@kleopatra对此问题的回答:JTable 输入验证器 https://stackoverflow.com/a/5876185/1795530。如前所述,更好的方法是提供自定义单元格编辑器 http://docs.oracle.com/javase/7/docs/api/javax/swing/CellEditor.html并进行验证停止单元格编辑() http://docs.oracle.com/javase/7/docs/api/javax/swing/CellEditor.html#stopCellEditing%28%29方法实施。作为一个建议,我会使用默认单元格编辑器 http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultCellEditor.html这需要一个复选框 http://docs.oracle.com/javase/7/docs/api/javax/swing/JCheckBox.html作为参数并覆盖上述方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)