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

标签 java swing netbeans checkbox jtable

我在 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/

相关文章:

java - 将webapp的资源部署到maven存储库?

java - java中如何将2个容器放入1个容器中?

java - 将 JLabel 放置在 JPanel 上的特定 x、y 坐标处

java - 按下按钮即可添加新字段

Java 8 和广义目标类型推断

java - openGL 中的雾取决于相机位置

java - 可以在netbeans上直观地设计Web应用程序UI吗?

c++ - Netbeans、C++ 和 Git

java - 如何重写库类的方法或分配参数值?

java - 如何将多个 jComponent 插入到 jTable 的单元格中