2015-06-20 126 views
-3

我有一個正在由ResultSet填充的JTable。有什麼方法可以計算特定列的總和並將其添加到同一個表的最後一行?JTable計算列總和

public static DefaultTableModel buildTableModel(ResultSet rs) 
     throws SQLException { 

    ResultSetMetaData metaData = rs.getMetaData(); 

    // names of columns 
    Vector<String> columnNames = new Vector<String>(); 
    int columnCount = metaData.getColumnCount(); 
    for (int column = 1; column <= columnCount; column++) { 
     columnNames.add(metaData.getColumnName(column)); 
    } 

    // data of the table 
    Vector<Vector<Object>> data = new Vector<Vector<Object>>(); 
    while (rs.next()) { 
     Vector<Object> vector = new Vector<Object>(); 
     for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) { 
      vector.add(rs.getObject(columnIndex)); 
     } 
     data.add(vector); 
    } 

    return new DefaultTableModel(data, columnNames); 

} 


    public static void main(String[] args) throws Exception { 
    // The Connection is obtained 

    ResultSet rs = stmt.executeQuery("select * from product_info"); 

    // It creates and displays the table 
    JTable table = new JTable(buildTableModel(rs)); 

    // Closes the Connection 

    JOptionPane.showMessageDialog(null, new JScrollPane(table)); 
} 

如果有一個名爲qty的列是否有一種方法可以在表的底部獲取總數?

+1

你能分享你到目前爲止的代碼? – Mureinik

+1

爲了儘快提供更好的幫助,請發佈[MCVE](http://stackoverflow.com/help/mcve)(最小完整可驗證示例)或[SSCCE](http://www.sscce.org/)(Short,Self包含,正確示例)。 – Madhan

+1

http://java-sl.com/envelope.html – StanislavL

回答

1

希望這有助於

jTable1.setColumnSelectionAllowed(true); 
jTable1.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION); 



public void calculate() { 
    calculate(jTable1, jTable1.getSelectedColumn(), jTable1.getSelectedRows()); 
} 

public void calculate(JTable table, int column, int[] rows) { 
    int result = 0; 
    for (int row : rows) { 
     result += Integer.valueOf(table.getValueAt(row, column).toString()); 
    } 
    ((DefaultTableModel) table.getModel()).addRow(new Object[]{result}); 
}