我有 28 列,金额是其中之一,还有一个总计按钮。所以当我按下总计按钮时想要显示最后一行中“金额”列的总和。我使用 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);
}
}
});
最佳答案
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);
}
您可以看到您正在声明每一行的总值(value)。因此,您将删除它并最终得到新行中的最后一个值。
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
然后,由于我现在才注意到这一点,因此您需要在计算总计
后设置该值。循环之后。
for(){ ... }
model.setValueAt(total,model.getRowCount() - 1 ,5);
关于java - JTable 列值的总和以及总和显示在最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43654515/