我有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);
}
}
});
答案 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; }
}