我有一个JTable,我有几个JCheckBoxes。我正在从数据库初始化JCheckBoxes和其他单元格值。我的问题是,当我点击JCheckBox进行检查或取消选中时,他们什么也不做。
当我单击两次时,可编辑的JTable单元变为活动状态并显示JCheckBox的值为0或1.我可以使用0 OR 1编辑单元格,当我保存时,它保存记录并加载带编辑的复选框值。
以下代码段显示我如何加载和创建JCheckBoxes:
class TextBoxNewCellRenderer extends JPanel implements TableCellRenderer {
:::
public Component getTableCellRendererComponent(
case 10: //Active
switch (column) {
case 0:
this.add(lblStar);
this.add(new JLabel(value.toString(), JLabel.LEFT));
break;
case 1:
checkBox = new JCheckBox();
checkBox.setToolTipText("Set 0 OR 1");
checkBox.setEnabled(true);
if(value.toString().equals("1"))
checkBox.setSelected(true);
if(value.toString().equals("0"))
checkBox.setSelected(false);
this.add(checkBox);
break;
:::
return this;
}
}
在我的renderTable方法中,我覆盖了以下isCellEditable:
DefaultTableModel model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
switch (row){
case 10: //Active
switch (column) {
case 0:
return false;
case 1:
return true;
case 2:
return false;
case 3:
return false;
default:
return false;
}
default:
return false;
}
}
};
当我双击JCheckBoxe时,这是JTable的图片:
无论如何我只需点击一下就可以选中或取消选中JCheckBoxes吗?我不想用0或1更新JTable单元格以便检查或取消选中。请帮助。
干杯。
答案 0 :(得分:2)
当我点击两次时,可编辑的JTable单元变为活动状态并显示JCheckBox的值为0或1.
如果您希望使用默认的渲染器/编辑器,那么您应该在Boolean.TRUE
中存储Boolean.FALSE
或TableModel
。
然后,您还需要覆盖getColumnClass()
的{{1}}方法以返回TableModel
。
阅读How to Use Tables上Swing教程中的部分,了解更多信息和工作示例。