删除JTable中选定的复选框行(单个和多个)

时间:2014-11-04 16:37:58

标签: java swing jtable

我想删除通过按钮在jtable中选中其复选框的行(单个或多个)但它无法正常工作..这是抛出异常..这里是代码..

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        DefaultTableModel model = (DefaultTableModel) jTable2.getModel();
        for (int i=0;i<model.getRowCount();i++) {
              Boolean checked=(Boolean)model.getValueAt(i,7);
              if (checked) {
                   model.removeRow(i);
                   i--;
              }
        }
}        

3 个答案:

答案 0 :(得分:1)

这是因为如果没有选择组合框,你将null而不是false。为了避免这种情况,你可以先检查是否为空

DefaultTableModel model = (DefaultTableModel) jTable2.getModel();

    for (int i=0;i<model.getRowCount();i++) {
          Boolean checked=(Boolean)model.getValueAt(i,7);
          if (checked!=null && checked) {
               model.removeRow(i);
               i--;
          }
    }

答案 1 :(得分:0)

尝试以下降方式迭代:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                                    
    DefaultTableModel model = (DefaultTableModel) jTable2.getModel();
    for (int i=model.getRowCount();i<0;i--) {
          Boolean checked=(Boolean)model.getValueAt(i-1,7); // Checkbox is in 7th column?
          if (checked) {
               model.removeRow(i-1);
          }
    }
}  

答案 2 :(得分:0)

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        DefaultTableModel tm= (DefaultTableModel) jTable1.getModel();

    for (int i=0;i<tm.getRowCount();i++) {
          Boolean checked=(Boolean)model.getValueAt(i,0);
          if (checked!=null && checked) {
               tm.removeRow(i);
               i--;
          }
    }
    }