Получить сумму определенного столбца при редактировании ячейки в Jtable - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь получить сумму в столбце 4 при вводе / редактировании значения в столбце 4. Сразу же меняю цифру, т. Е. По мере ввода текста в любой строке столбца 4 она должна изменить мою сумму, которую я установил в jTextField.

Я пробовал TableModelListener и ListSelectionListener, но это не сработало эффективно, потому что мне нужно щелкнуть строку, чтобы получить сводку.

jTable1.getModel().addTableModelListener(new TableModelListener(){
public void tableChanged(TableModelEvent evt){
    float sum = 0;
    int[] rows = jTable1.getSelectedRows();
    for(int i=0;i<jTable1.getRowCount();i++){
    try{
    sum = sum + 
Float.parseFloat(jTable1.getValueAt(rows[i],4).toString());
    }
    catch(Exception e){
    continue;
    }
    }
    jTextField15.setText(Float.toString(sum));
    getsummaries();
    }
});

Сразу же я изменяю значение в столбце 4, я хотел бы, чтобы оно было автоматически на jTextField15.

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

это не сработало эффективно, потому что мне нужно щелкнуть строку, чтобы получить сводку.

Модель обновляется только тогда, когда ячейка теряет фокус, потому что тогдазначение, которое вы вводите, сохраняется в модели.Это потому, что вы можете начать набирать цифры, а затем использовать клавишу «escape» для отмены редактирования.

Если вы действительно хотите обновить итоговую сумму, когда пользователь вводит данные в редактор, тогда вместо использования TableModelListener,вам нужно будет добавить DocumentListener в текстовое поле, используемое редактором:

DefaultCellEditor editor = (DefaultCellEditor)table.getDefaultEditor(Integer.class);
JTextField textField = (JTextField)editor.getComponent();
textField.getDocument().addDocumentListener(...);

См. раздел из учебника по Swing по Прослушивание изменений в документе для получения дополнительной информациии примеры.

Конечно, если вы сделаете это, вам также нужно будет обработать случай, когда редактор отменяется.Поэтому вам также необходимо добавить PropertyChangeListener к JTable и прослушать tableCellEditor изменение свойства.

0 голосов
/ 18 мая 2019

Я еще не получил решение этой проблемы.При наборе текста на JTable сложно записать сумму.Обходной путь может заключаться в создании кнопки, которая вычисляет сумму в jTextField.

...