2014-11-04 27 views
0

我想刪除在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--; 
       } 
     } 
}   
+0

爲什麼我 - ???????? – 2014-11-04 16:42:27

+0

,因爲如果我刪除一行然後沒有行也減少一。它是爲多行刪除。 – Hammad 2014-11-04 16:46:13

+0

他想刪除所選的那些。拋出什麼異常? – 2014-11-04 16:47:42

回答

1

這是因爲,如果不選擇組合框你會得到nullfalse。要避免這種情況,你可以檢查null或不是第一個

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--; 
      } 
    } 
+0

不工作.... :( – Hammad 2014-11-04 16:58:22

+0

什麼?你得到任何錯誤?這對我來說很好.did你改變if(checked!= null && checked)?? – 2014-11-04 16:59:09

+0

是的我有嘗試你的選擇,但得到異常錯誤(錯誤張貼在上面) – Hammad 2014-11-04 17:05:13

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); 
      } 
    } 
} 
+0

仍然不起作用 – Hammad 2014-11-04 16:55:33

+0

發佈您的異常,請指向線 – Ezequiel 2014-11-04 16:57:16

+0

線程「AWT-EventQueue-0」中的異常java.lang.ArrayIndexOutOfBoundsException:4> = 4 \t at java.util.Vector.elementAt(Vector.java: 470) – Hammad 2014-11-04 17:02:46

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--; 
      } 
    } 
    } 
相關問題