JTable中的JCheckBox行为

BJ *_*ruz 3 java swing jtable jcheckbox

我按照在线某处的指示在JTable中插入复选框.这是我的代码:

  protected class JTableCellRenderer implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
      JCheckBox rendererComponent = new JCheckBox();
      rendererComponent.setSelected((Boolean) tableModel.getValueAt(row,
        column));
      return rendererComponent;
    }

  }
Run Code Online (Sandbox Code Playgroud)

我设法将复选框添加到JTable,但是当我运行程序时,我得到以下行为:

在此输入图像描述

当用户点击复选框时,如何允许用户选中复选框,而不是从下拉菜单中选择True或False?谢谢!

Hov*_*els 6

你所遵循的方向很糟糕,因为没有必要摆弄渲染器或编辑器(顺便说一下,你的问题是你在不改变编辑器的情况下改变了渲染器).您所要做的就是在TableModel类中,重写该getColumnClass(int index)方法并让它为需要复选框的列返回Boolean.class.而已.JTable将自动使用列的渲染器和编辑器的复选框,以非常简单的方式解决您的问题.当然,不言而喻,该列的数据必须是布尔值才能使其工作.

关于JTables的Oracle教程将告诉你所有这些以及更多:如何使用表