我在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" 。
对于我想要做的事情,我需要取回类型"复选框"的对象/组件。而不只是找出它是否被选中。这可能吗?我在编程方面不是很先进,所以这就是我遇到麻烦的原因。
答案 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
,可能会使事情变得更容易。