繁体   English   中英

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

[英]How to get content of JTable if cell contains checkbox

我在Netbeans中创建了一个JTable,其第一列包含复选框。

这些复选框是通过添加

JCheckBox checkBox = new javax.swing.JCheckBox(); 

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

右键单击JTable时在定制代码下。 并且在Table Contents中,我将数据类型指定为Boolean (因为我之前从未使用过JTable,所以我基本上遵循了该网站上的说明: 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”

对于我想做的事情,我需要找回类型为“复选框”的对象/组件,而不仅仅是找出是否被选中。 那有可能吗? 我在编程方面不是很高级,所以这就是我遇到麻烦的原因。

编辑 :下面的旧答案被提醒,通过TableModel直接获取boolean值比用JTable UI搞砸更安全。

不要尝试将任何内容JCheckBoxJCheckBox ,而是遍历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 ,都可能使事情变得更容易。

暂无
暂无

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

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