Вычислите сумму столбца и поместите ее в эту таблицу

Как я могу рассчитать сумму столбца цены в 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 ответа

Попробуйте что-то вроде этого. Получить модель и использовать 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);

Если вам нужно, чтобы итоговое значение динамически поддерживалось в актуальном состоянии, то вам нужно либо переопределить свой TableModel, чтобы предоставить сумму для последней строки, либо потребуется прослушивать изменения модели и обновить последнюю строку с суммой.

Настройка вашей собственной TableModel также позволит вам сделать вашу итоговую строку недоступной для редактирования, так что, хотя это может быть больше работы, она обеспечивает гораздо большую гибкость.

Другие вопросы по тегам