代码之家  ›  专栏  ›  技术社区  ›  Mohammad Quanit

java中Jtable列值之和

  •  0
  • Mohammad Quanit  · 技术社区  · 7 年前

    伙计们,我的问题是关于jtable列值的,我遇到了一个问题。我想对jtable列值求和,并将其放入文本字段。我正在向jtable中插入值,如果一行为空,则它不会在之后计算总数。我不明白是什么问题。我创建了一个方法,并在按钮事件上调用它。

    public void getSum(){
    
        int total=0;
        for(int i=0; i<JV_tbl.getRowCount(); i++){
            int amount = Integer.parseInt((String) JV_tbl.getValueAt(i, 6));
    
            total+=amount;
        }
        JV_totalDebit_box.setText(String.valueOf(total));
    
    }
    

    和按钮事件代码。

    private void btn_entrySaveActionPerformed(java.awt.event.ActionEvent             evt) {                                              
         model = (DefaultTableModel)JV_tbl.getModel();
         model.addRow(new Object[]{
             jv_no_box.getText(),
             JV_entry_box.getText(),
             ((JTextField)date_txt.getDateEditor().getUiComponent()).getText(),
             JV_Acc_code.getText(),
             JV_acc_title.getText(),
             JV_desc_box.getText(),
             JV_debit_box.getText(),
             JV_credit_box.getText(),
             prep_box.getText(),
             checked_box.getText(),
             approved_box.getText()
    
         });
    
         getSum();
    
    }               
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Arpit Porwal    7 年前

    如下所示更改getSum()函数。它将删除所有空行,然后继续合计。

    public void getSum(){
        int rowcount1 = JV_tbl.getRowCount();
        DefaultTableModel tbm1 = (DefaultTableModel) JV_tbl.getModel();
        for(int i = rowcount1-1; i >=0; i--){
            if(JV_tbl.getValueAt(i, 6) == null){
                tbm1.removeRow(i);
            }       
        }
    
        int total=0;
        for(int i=0; i<JV_tbl.getRowCount(); i++){
            int amount = Integer.parseInt(JV_tbl.getValueAt(i, 6).toString());
    
            total+=amount;
        }
        JV_totalDebit_box.setText(String.valueOf(total));
    
    }