尽管已经检查过,但JTable中的复选框始终返回false

我在JTable中使用复选框,itsef是JPanel一部分。 最初我使用的是JOptionPane ,点击OK按钮后我获得了价值,但现在我在JFrame添加了JPanel 。 当我单击右上角的X符号时,它不会检索单击的复选框的值,但能够获取其他列的值。 代码段如下:

 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()+"%"; } } 

  1. 遵循Java变量命名标准。 变量名称不应以大写字符开头。 有些人的名字是正确的。 其他人不是。 始终如一!!!

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

阅读有关如何使用表的Swing教程中的部分以获取更多信息和工作示例。