繁体   English   中英

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

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

我有一个JTable,其中有几个JCheckBoxes。 我正在从数据库初始化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单元以进行检查或取消检查。 请帮忙。

干杯。

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

如果要使用默认的渲染器/编辑器,则应该在TableModel存储Boolean.TRUEBoolean.FALSE

然后,您还需要重写TableModelgetColumnClass()方法以返回Boolean.class

阅读Swing教程中有关如何使用表的部分, 获取更多信息和工作示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM