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

How to properly set editable checkbox inside a JTable cell in Java Swing application?

我有一个 JTable,其中有几个 JCheckBox。我正在从数据库中初始化 JCheckBoxes 和其他单元格值。我的问题是,当我单击 JCheckBox 以选中或取消选中时,它们什么都不做。

当我单击两次时,可编辑的 JTable 单元格变为活动状态并显示 JCheckBox 的值为 0 或 1。我可以使用 0 或 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 单元格以便选中或取消选中。请帮助。

干杯。

When I clicked twice, the editable JTable cell become active and shows the value of JCheckBox which is 0 OR 1.

如果你想使用默认的 renderer/editor 那么你应该在 TableModel.

中存储 Boolean.TRUEBoolean.FALSE

那么你还需要将TableModelgetColumnClass()方法重写为return Boolean.class.

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