0

我有一个弹出菜单来删除JTable. 该表有一列带有布尔值(真/假)。如果该列的值为真,将删除该行。但是选择的索引数组是错误的。示例:选择索引为 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

2

您没有访问数组的值。这应该我更正确:

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(rows[i], 8)).booleanValue();
                if(temp == true){
                    System.out.println("ID "+this.tabMAIN.getValueAt(rows[i], 3)+((Boolean)this.tabMAIN.getValueAt(rows[i], 8)).booleanValue());
                }else{
                     System.out.println("ID "+this.tabMAIN.getValueAt(rows[i], 3)+((Boolean)this.tabMAIN.getValueAt(rows[i], 8)).booleanValue());
                }
             }          
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }   
于 2013-10-27T06:15:49.723 回答
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 回答