【问题标题】:Checkbox in JTable always return false despite of it's checked尽管已选中,但 JTable 中的复选框始终返回 false
【发布时间】:2014-07-20 06:18:58
【问题描述】:

我在JTable 中使用复选框,它的ef 是JPanel 的一部分。最初我使用JOptionPane 并单击“确定”按钮我得到了价值,但现在我在JFrame 中添加了JPanel。当我单击右上角的X 符号时,它不会检索单击的复选框的值,但能够获取其他列的值。代码 sn-p 如下:

DefaultTableModel dtm = new DefaultTableModel(rowData, columnNames)
        {
        };
for (int i = 0; i < records.size(); i++)
            {
               // System.out.println(records.get(i));
                singleRecord = records.get(i).toString().split("%");
                Pages = singleRecord[0].toString();
                BKey= singleRecord[1].toString();
                Title = singleRecord[2].toString();
                Author = singleRecord[3].toString();
                TimeStamp = singleRecord[4].toString();
                dtm.addRow(new Object[] { Boolean.FALSE ,Pages,BKey,Title,Author,TimeStamp});

        } 

table = new javax.swing.JTable(dtm)
        {
            public boolean isCellEditable(int row,int column)
            {
                /*if(column == 0)
                    return true;
                else
                    return false;
                 * 
                 */
                return(column < 2);
            }
        };

for (int i = 0; i < table.getRowCount(); i++)
            {
                 System.out.println(table.getValueAt(i,1).toString());
                 boolean isChecked = (Boolean) table.getValueAt(i,0);//always return false
                 if (isChecked)
                 {
                     System.out.println("checked ");
                   Ids+=table.getValueAt(i,2).toString()+"%";
                 }
            }

【问题讨论】:

    标签: java swing checkbox jtable


    【解决方案1】:
    1. 遵循 Java 变量命名标准。变量名不应以大写字符开头。你们中有些人的名字是正确的。其他人不是。保持一致!!!

    2. 如果您总是得到错误,那可能是因为当您单击单元格时编辑器没有将值更新为 Boolean.TRUE。您不仅需要重写 isCellEditable(...) 方法来确定哪些单元格是可编辑的,还需要重写 getColumnClass(...) 方法以返回单元格的类(在本例中为 Boolean.class),以便表格可以使用适当的渲染器和编辑器。

    阅读 How to Use Tables 上的 Swing 教程部分,了解更多信息和工作示例。

    【讨论】:

    • 感谢您指出命名约定问题。说到问题,代码运行良好。我刚刚将JPanel 移动到JFrame 中,它停止获取值。这听起来不合逻辑,但它正在发生。
    • @volatil3 然后你需要提供一个可运行的例子来证明你的问题
    • @MadProgrammer 我刚刚更新了这个问题。该代码是 OpenOffice 插件的一部分,因此不确定如何提供整个代码。我正在使用DefaultTableModel
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多