0

で複数の行を削除するポップアップ メニューがありますJTable。このテーブルには、ブール値 (true/false) を持つ列があります。この列の値が true の場合、この行を削除します。しかし、選択されたインデックス配列は間違っています。例: インデックス付きの選択行は 2,3,4 ですが、結果は 0,2,3 です。最初の行は常に選択されていました。条件なしで複数の行を選択すると、結果は正しいです。

誰でも私を助けることができますか?

これはサンプルコードです (Netbeans を使用):

private void menuDeleteLOANActionPerformed(java.awt.event.ActionEvent evt) {                                               
        int[] rows = this.tabMAIN.getSelectedRows();
        try {           
            for(int i = rows.length-1; i >= 0; i--){
                boolean temp = ((Boolean)this.tabMAIN.getValueAt(i, 8)).booleanValue();
                if(temp == true){
                    System.out.println("ID "+this.tabMAIN.getValueAt(i, 3)+((Boolean)this.tabMAIN.getValueAt(i, 8)).booleanValue());
                }else{
                     System.out.println("ID "+this.tabMAIN.getValueAt(i, 3)+((Boolean)this.tabMAIN.getValueAt(i, 8)).booleanValue());
                }
             }          
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }               
4

2 に答える 2

1

行インデックスをモデル インデックスに変換してみてください

 for (int z = 0; z < tblQue1.getRowCount();) {

                if ((Boolean) tblQue1.getValueAt(z, 4) == true) {

                    dmQue1.removeRow(tblQue1.convertRowIndexToModel(z));
                } else {
                    z++;
                }
            }
于 2013-10-28T07:17:09.487 に答える