如何在Java Swing应用程序中的JTable单元格内正确设置可编辑复选框?

时间:2016-10-06 13:38:45

标签: java swing jtable jcheckbox

我有一个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的图片:

enter image description here

无论如何我只需点击一下就可以选中或取消选中JCheckBoxes吗?我不想用0或1更新JTable单元格以便检查或取消选中。请帮助。

干杯。

1 个答案:

答案 0 :(得分:2)

  

当我点击两次时,可编辑的JTable单元变为活动状态并显示JCheckBox的值为0或1.

如果您希望使用默认的渲染器/编辑器,那么您应该在Boolean.TRUE中存储Boolean.FALSETableModel

然后,您还需要覆盖getColumnClass()的{​​{1}}方法以返回TableModel

阅读How to Use Tables上Swing教程中的部分,了解更多信息和工作示例。