2017-04-27 23 views
0

私は28の列を持ち、金額は1つで、合計1つのボタンです。だから私は合計ボタンを押したときに最終行の金額列の合計を表示したい。私は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:あなたが 'ダブルトータル(double total) 'を後で持っているので、あなたが私にとって奇妙なのならば(source == 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); 
}   

あなたは、各行のためのあなたの合計値を宣言している見ることができます。だからあなたはそれを消して新しい行の最後の値で終わります。あなたが行を追加しますので、これはtotal 1であるので、

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

また、あなたは最後の値を読んではいけません、あなたはtotal *2結果に終わるでしょう。私は今、このことを気づくために、あなたはtotalを計算した後に値を設定する必要があり、その後

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

:だからのような条件を変更してください。ループの後。

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

からお世話になりますが、うまくいきません...最後の行には、私は新しいコードを貼り付けています。 – Vsal

+0

@Vsal私の悪い、私が持っていたすべてを書いていませんでした念頭に置いて。宣言と同じですが、ループ内の値を(各値に対して)設定していますが、その必要はありません。ループ内で 'total'を計算してから、ループの最後の行の値を設定してください。 – AxelH

+0

@AxelH ...ここでは機能しません。私はamount列の最初の行に2を入れ、次に2行目を2行目にして3行目に2を入れました。問題を認識できません。 – Vsal

関連する問題