2017-04-27 121 views
0

我有28列,金額是他們中的一個和一個總按鈕。所以當我按下總按鈕想要顯示最後一行的金額欄的總和。我用DefaultTableModel,並要顯示的金額低於和等於columnonly 我想這個代碼 -JTable列值和總和顯示在最後一行的總和

totalbtn.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent ae) 
     { 
      Object source = ae.getSource(); 

      if (source == totalbtn) 
      { 
       double total = 0.0; 
       model.addRow(new Object[]{"","" ,new Integer(1), "", new Double(0.0),new Double(0.0),new Double(0.0),"",new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)}); 
       for(int i = 0; i < model.getRowCount()-1 ; i++) 
       { 
        double Amount = (double) model.getValueAt(i, 5); 
        total = Amount+total; 

       }  
        model.setValueAt(total,model.getRowCount()-1,5); 
       //  model.setValueAt(total,i,5); 
        System.out.println("total is"+total); 







      } 
     } 


    }); 
+1

首先,問題是什麼?對於8列數組,這是一個很長的數組,你確定嗎? PS:'if(source == total)'對我來說很奇怪,因爲你以後有'double total'。你應該將它重新命名爲'totalBtn'以便更容易理解 – AxelH

+0

還要修正縮進,當前的縮進。 – Berger

+0

我修好了。我如何實現解決方案? – Vsal

回答

1
for(int i = 0; i < model.getRowCount(); i++){ 
    double total = 0; //#########3 
    double Amount = (double) model.getValueAt(i, 5); 
    total = Amount+total; 
    model.setValueAt(total,i,5); 
    System.out.println("total is"+total); 
}   

你可以看到你在聲明後的總價值爲每一行。所以你會擦除它並以新行中的最後一個值結束。

double total = 0; 
for(int i = 0; i < model.getRowCount(); i++){ 
    .. . 
} 

此外,由於添加行,你不應該看的最後一個值,因爲這是一個total,你會最終有一個結果total *2。因此,改變像條件:

for(int i = 0; i < model.getRowCount() -1 ; i++){ //To skip the `total` row 

然後,因爲我發現這只是現在,你需要你有計算total後設置的值。循環之後。

for(){ ... } 
model.setValueAt(total,model.getRowCount() - 1 ,5); 
+0

謝謝你,但它不工作...在最後一行我得到0,在這裏我粘貼我的新代碼 – Vsal

+0

@Val我的不好,沒有寫我所有的一切心裏。與聲明相同,您正在設置循環中的值(對於每個值),不需要該值。只需在循環中計算'total',然後在循環中設置最後一行的值。 – AxelH

+0

@AxelH ...它不工作在這裏,我把第2行的第一行數量列,然後4第二行,所以我得到2第三行....無法識別問題,在這裏我貼我的新代碼 – Vsal