如果单元格包含复选框,如何获取JTable的内容

时间:2016-01-26 09:59:06

标签: java swing netbeans checkbox jtable

我在Netbeans中创建了一个JTable,其中第一列由复选框组成。

这些复选框是通过添加

制作的
JCheckBox checkBox = new javax.swing.JCheckBox(); 

jTable1.getColumn("ColumnName").setCellEditor(new DefaultCellEditor(checkBox)); 

下 右键单击JTable时,自定义代码。在表格内容中,我将数据类型指定为 Boolean (我基本上遵循了本网站上的说明,因为我之前从未使用过JTables :http://forums.netbeans.org/topic9007.html

我现在的问题是:如何获取row = 1&中的实际复选框? coloumn = 1,例如? 这些尝试都不起作用:

JCheckBox j = (JCheckBox) jTable1.getComponent(1);

JCheckBox j = (JCheckBox) jTable1.getModel().getValueAt(1, 1);

我收到错误消息" java.lang.String无法强制转换为javax.swing.JCheckBox"

对于我想要做的事情,我需要取回类型"复选框"的对象/组件。而不只是找出它是否被选中。这可能吗?我在编程方面不是很先进,所以这就是我遇到麻烦的原因。

1 个答案:

答案 0 :(得分:1)

编辑:下面的旧答案提醒说,通过TableModel直接获取boolean值比使用JTable搞错更安全用户界面:)

请勿尝试向JCheckBox转换任何内容,而是遍历Model以获取所需的值。

Component列表包含Object中定义的所有内容,因此您可能无法始终获得所需的特定元素。

我建议循环浏览Components并使用instanceof检查它是否与JCheckBox匹配。

for(Component c : jTable1.getComponents[]) {
    if(c instanceof javax.swing.JCheckBox) {
        // do the stuff
    } else {
        // don't do the stuff
    }
}

或者甚至遍历第一列中的Components,可能会使事情变得更容易。