我在 Netbeans 中创建了一个 JTable,其中第一列由复选框组成。
这些复选框是通过添加
JCheckBox checkBox = new javax.swing.JCheckBox();
和
jTable1.getColumn("ColumnName").setCellEditor(new DefaultCellEditor(checkBox));
下 右键单击 JTable 时自定义代码。在Table Contents中,我将数据类型指定为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”。
对于我想做的事情,我需要取回“复选框”类型的对象/组件,而不仅仅是找出它是否被选中。这可能吗?我在编程方面并不是很先进,所以这就是我遇到麻烦的原因。
最佳答案
编辑:下面的旧答案,提醒通过 TableModel
直接获取 boolean
值比乱搞更安全使用 JTable
UI :)
不要尝试将任何内容转换为 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
,可能会让事情变得更容易。
关于java - 如果单元格包含复选框,如何获取 JTable 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011128/