JTable中未选中的复选框提供了NullPointerException

Fir*_*kon 2 java checkbox swing jtable

我创建了一个JTable,最后一列(第6列)是带有复选框的“选择”列。通过覆盖getColumnClass方法以返回Boolean.class来添加复选框。

    DefaultTableModel dtm = new DefaultTableModel(data, header){
            @Override
            public Class<?> getColumnClass(int col) {
                if(col == 5){
                    return Boolean.class;
                }
                return super.getColumnClass(col);
            }
        };
Run Code Online (Sandbox Code Playgroud)

现在,我必须使用这些复选框选择一些行,并将这些选定行中的一些值添加到数据库中。这是我使用的代码。

DefaultTableModel model = (DefaultTableModel) tblInvoiceList.getModel();
for(int i=0; i<model.getRowCount();i++) {
    if ((Boolean)model.getValueAt(i, 5))
        paydao.updateInvoiceWithPayment(model.getValueAt(i, 0).toString());
}
Run Code Online (Sandbox Code Playgroud)

当我遍历时,选中的复选框返回true。未选中的将抛出NullPointerException。该异常发生在(Boolean)model.getValueAt(i,5)部分中。如何使未经检查的返回false?

tra*_*god 5

默认的表格单元格编辑器最初可能接受null,但是您的循环不接受。如此此处所示,当您获取表数据时,应将呈现为未选中状态的模型值设置为Boolean.FALSEfalse显式设置。