2015-06-26 2 views
1

Я использую jtable для отображения данных, полученных из базы данных mysql, мне нужно получить общие значения третьего столбца, который является столбцом баланса в таблице , любая помощь будет оцененаполучить общие значения столбца в jtable

 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); 
      } 
    } 
    } 
+0

Что вы получаете, когда используете этот код для получения значения? – ryekayo

+0

Вы имеете в виду сумму ?? –

+0

, когда я запускаю код, он дает мне все, что мне нужно, но я хотел получить сумму всех значений в третьем столбце и установить его в текстовое поле. –

ответ

2

вы можете использовать метод getValueAt(row index , column index), чтобы получить значение определенного cell.and вы можете получить сумму следующим образом.

Пример

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 
} 
+0

Возможно, вы также захотите преобразовать индекс столбца на случай, если таблица переупорядочивается, вышеописанный взгляд только на 3-й столбец. – basic

+0

total + = model.getValueAt (i, 2); i получить ошибку оператор + = не определен для типа аргументов int, object –

+0

@abdulazizibrahim см. Мой обновленный ответ. Вы должны либо преобразовать vale [object] в int, либо изменить тип данных 3-го столбца на целое, например, joop. –

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; 

Причина наличия правильного типа в модели является возможность иметь визуальное форматирование каждого типа/колонки.

Смежные вопросы