Java 获取jtable中某列的总值

Java 获取jtable中某列的总值,java,mysql,Java,Mysql,我使用一个jtable来显示从数据库mysql检索到的数据,我需要得到第三列的总值,这是表中的balance列 任何帮助都将不胜感激 table_1 = new JTable(); DefaultTableModel model =(new DefaultTableModel( new Object[][] { }, new String[] { "YEAR", "TERM", "BALANCE",

我使用一个jtable来显示从数据库mysql检索到的数据,我需要得到第三列的总值,这是表中的balance列 任何帮助都将不胜感激

     table_1 = new JTable();

    DefaultTableModel model =(new DefaultTableModel(
        new Object[][] {
        },
        new String[] {
            "YEAR", "TERM", "BALANCE",
        }
    ));
    table_1.setModel(model);
    table_1.getColumnModel().get-column(0).setPreferredWidth(100);
    table_1.getColumnModel().getColumn(2).setPreferredWidth(107);
    table_1.getColumnModel().getColumn(3).setPreferredWidth(130);
    scrollPane_3.setViewportView(table_1);

    btnSearch_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
    //database connection and retrieving data from database
    while(rs.next()){
     Vector<String> rowData = new Vector<>();
                         rowData.add(rs.getString(1));
                         rowData.add(rs.getString(2));
                         rowData.add(rs.getString(3));


                         // row++;
                         model.addRow(rowData);
          }
    }
   }
table_1=new JTable();
DefaultTableModel=(新的DefaultTableModel(
新对象[][]{
},
新字符串[]{
“年度”、“期限”、“余额”,
}
));
表1.集合模型(模型);
表1.getColumnModel().get列(0).setPreferredWidth(100);
表1.getColumnModel().getColumn(2).setPreferredWidth(107);
表1.getColumnModel().getColumn(3).setPreferredWidth(130);
滚动窗格3.setViewportView(表1);
btnSearch_1.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
//数据库连接和从数据库检索数据
while(rs.next()){
向量行数据=新向量();
添加(rs.getString(1));
添加(rs.getString(2));
添加(rs.getString(3));
//行++;
model.addRow(rowData);
}
}
}

您可以使用方法
getValueAt(行索引、列索引)
来获取特定单元格的值。您可以按如下方式获取总和

范例

int total=0;
for (int i = 0; i < model.getRowCount(); i++){
    total +=Integer.parseInt( model.getValueAt(i, 2).toString() );// 3rd column . row column indexes are 0 based
}
int-total=0;
对于(int i=0;i
首先将
对象[]
用于记录,将
大十进制
用于金额

 Object[] rowData = new Object[] {
     rs.getString(1),
     rs.getString(2),
     rs.getBigDecimal(3),
     rs.getString(4)};
 model.addRow(rowData);
以后可以通过以下方式进行添加:

  BigDecimal sum = BigDecimal.ZERO;
  DefaultTableModel model = (DefaultTableModel) table_1.getModel();
  for (int row = 0; row < model.getRowCount(); ++row) {
      BigDecimal x = (BogDecimal) model.Value(row, 3 - 1);
      if (x != null) {
          sum = x.add(sum);
      }
  }
  return sum;
BigDecimal sum=BigDecimal.ZERO;
DefaultTableModel=(DefaultTableModel)表_1.getModel();
对于(int row=0;row

在模型中使用正确类型的原因是,每个类型/列都有可视格式。

当您为值运行此代码时,您得到了什么?当我运行代码时,它提供了我所需的一切,但我希望获得第三列中所有值的总和,并将其设置为textfield。您可能还希望rt列索引以防表被重新排列,上面的方法只查看第三列。total+=model.getValueAt(i,2);我得到一个错误,参数类型int的运算符+=未定义,object@abdulazizibrahim查看我的更新答案。您应该转换vale[object]如joop所说,将第三列的数据类型整型或更改为整数。它可以工作,但问题是它会显示第一行两次,并显示总和,但我需要它来显示总和only@abdulazizibrahim你把代码放在哪里了?