JTable列值的总和以及最后一行中的总和显示

时间:2017-04-27 09:59:07

标签: java

我有28列,Amount是其中之一,总共有一个按钮。所以当我按下总按钮想要在最后一行显示金额列的总和。我使用DefaultTableModel并希望以低于列数量显示金额之和     我试过这段代码 -

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 个答案:

答案 0 :(得分:1)

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); 后设置该值。循环之后。

public class myCustomModel1
{
   public byte idL { get; set; }
   [Key]
   public int idP { get; set; }
   public string Name { get; set; }
   public virtual List<myCustomModel2> CustomModel2{ get; set; }
}

public class myCustomModel2
{
   public int idData { get; set; }
}