获取jtable中列的总值

时间:2015-06-26 14:54:54

标签: java mysql

我使用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);
          }
    }
   }

2 个答案:

答案 0 :(得分:2)

您可以使用方法getValueAt(row index , column index)获取特定单元格的值。您可以按以下方式获得总和。

示例

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
}

答案 1 :(得分:0)

首先使用Object[]表示记录,BigDecimal表示金额。

 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;

在模型中使用正确类型的原因是每种类型/列可以进行可视化格式化。