在jTable中汇总一列?

时间:2014-11-25 14:43:35

标签: java swing jtable

我在尝试从jTable中的列中获取值时遇到问题并总结它们。这是我到目前为止的代码:

public void saveTable(){
    for(int i = 0; i < jTable2.getRowCount(); i++){
        int total = 0;
        int Amount = (int) jTable2.getValueAt(i, 5);
        total = Amount+total;
        System.out.println(total);
    }
}

但是我一直特别得到ClassCastException错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:      java.lang.String cannot be cast to java.lang.Integer
at my.rcsv1.accounting.DraftInvoice.saveTable(DraftInvoice.java:851)

这是指代码行:

int Amount = (int) jTable2.getValueAt(i, 5);

为了让它发挥作用,我需要做些什么?

谢谢!

4 个答案:

答案 0 :(得分:2)

int Amount = Integer.parseInt(jTable2.getValueAt(i, 5)+"");

会做的事情

答案 1 :(得分:1)

您正在转换为原始数据类型,您应该进行解析。

试试这个:

int amount = Integer.parseInt(jTable2.getValueAt(i, 5));

此外,您不应该使用大写字母来启动变量名称,例如int Amount应为int amount

答案 2 :(得分:1)

例外情况表明您在该列中存储了一个字符串。

您可以使用数据模型jTable.getModel()以更好的方式进行。但就是这样:

    int total = 0;
    for (int i = 0; i < jTable2.getRowCount(); i++){
        int amount = Integer.parseInt((String) jTable2.getValueAt(i, 5));
        total += amount;
    }
    System.out.println(total);

答案 3 :(得分:0)

通过构造函数调用方法

public moneyManager() {
        initComponents();
        getSum();
        table_update();//table gets updated when records added
        getSum();
    }

方法实现

 private void getSum() {
        
        int sum = 0;
        for(int i =0;i<jTable1.getRowCount();i++){
            sum = sum +Integer.parseInt(jTable1.getValueAt(i, 2).toString());
            //here i is the row wise iteration and 2 is the column number of my 
              calculation attribute
        }
        //JlableTotal is where I want to display the total
        JlableTotal.setText(Integer.toString(sum));
   }