计算列的总和并将其放在jtable上

时间:2013-12-19 16:44:17

标签: java swing jtable sum tablemodel

如何计算jTable中的价格总和列,并将其总和放在jTable的末尾。你能给我一个示例代码吗?

public class IncomeReport extends JFrame {

private AccountFacade service = new AccountFacade();

void init() {

    String[] columnNames = {"مبلغ", "محل درآمد ", "منبع"};

    List list = service.incomeReportFacade();

    Object[][] model = new Object[list.size()][];
    for (int i = 0; i < list.size(); i++) {
        model[i] = (Object[]) list.get(i);
    }

    JTable table = new JTable(model, columnNames) {


        DefaultTableCellRenderer renderRight = new DefaultTableCellRenderer();

        {
            // initializer block
            renderRight.setHorizontalAlignment(SwingConstants.RIGHT);
        }

        @Override
        public TableCellRenderer getCellRenderer(int arg0, int arg1) {
            return renderRight;
        }

    };

2 个答案:

答案 0 :(得分:1)

尝试这样的事情。获取模型,并使用DefaultTableModel#getValueAt()方法。

Jtable table = new Jtable();
DefaultTableModel model = (DefaultTableModel)table.getModel();

double total = 0;
int column = 2;  // example

for (int i = 0; i < model.getRowCount(); i++){
    total += model.getValueAt(i, column);        // getValueAt(row, column)
}

Object[] row = {"", "", total};
model.addRow(row);

答案 1 :(得分:0)

如果您需要动态保持最新的总数,则需要覆盖TableModel以提供最后一行的总和,或者需要监听模型的更改并使用总和。

自定义您自己的TableModel还可以让您的摘要行无法使用,因此虽然这可能更有效,但它提供了更大的灵活性。