如何把jcheckbox放到表格单元格?

时间:2010-03-13 20:16:56

标签: java swing

我无法将jChceckBox放到jTable单元格中。我更可能将checkBox放到表中,但是当我使用该表运行模块时,应该是checkBox的单元格显示文本“true”或“false”。该单元格的行为与复选框相同,但它显示文本值而不是复选框。

这是代码。

DefaultTableModel dm = new DefaultTableModel();
dm.setDataVector(new Object[][]{{"dd", "Edit", "Delete"},
                                {"dd","Edit", "Delete"}},
                 new Object[]{"Include","Component", "Ekvi"});
jTable1 = new javax.swing.JTable();

jTable1.setModel(dm);


JCheckBox chBox=new JCheckBox();
jTable1.getColumn("Include").setCellEditor(new DefaultCellEditor(chBox));
jScrollPane1.setViewportView(jTable1);

2 个答案:

答案 0 :(得分:5)

阅读JTable API并按照“如何使用表格”的Swing教程链接获取工作示例。

基本上你在TableModel中存储布尔值,然后重写getColumnClass()方法以返回每个colulmn的类,表将选择适当的渲染器和编辑器。

答案 1 :(得分:1)

单元格编辑器根据编辑其值来定义表中数据的行为,您需要的是正确TableCellRenderer正确显示单元格内的复选框:

final JCheckBox checkBox = new JCheckBox();
jTable1.getColumn("Include").setCellRenderer(new DefaultTableCellRenderer() {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
      check.setSelected(((Boolean)value).booleanValue()) ;
      return check;
    }
});