我正在使用JTable
中的复选框,其中JPanel
属于JOptionPane
。最初我使用的是JPanel
,点击“确定”按钮后我获得了价值,但现在我在JFrame
中添加了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}}
答案 0 :(得分:3)
遵循Java变量命名标准。变量名称不应以大写字符开头。有些人的名字是正确的。其他人不是。保持一致!!!
如果您总是变错,那么可能是因为当您单击单元格时编辑器没有将值更新为Boolean.TRUE。您不仅需要覆盖isCellEditable(...)
方法来确定哪些单元格是可编辑的,还需要覆盖getColumnClass(...)
方法以返回单元格的类(在本例中为Boolean.class
}因此表可以使用适当的渲染器和编辑器。
阅读How to Use Tables上Swing教程中的部分,了解更多信息和工作示例。