CellEditorListener вызывает метод getCellEditorValue, когда выполняется фокусировка для столбца в jtable

#java #swing

#java #swing

Вопрос:

У меня есть метод, который используется для хранения отредактированных значений в БД.

 public Object getCellEditorValue() {
    String outputToCell = ((JTextField) component).getText();
    panelsign.updateAllergicReactions(outputToCell, row);
    return outputToCell;
}
  

Этот метод вызывается этим методом в JTable.class (предварительно определенный класс Java).

 /**
 * Invoked when editing is finished. The changes are saved and the
 * editor is discarded.
 * <p>
 * Application code will not use these methods explicitly, they
 * are used internally by JTable.
 *
 * @param  e  the event received
 * @see CellEditorListener
 */
public void editingStopped(ChangeEvent e) {
    // Take in the new value
    TableCellEditor editor = getCellEditor();
    if (editor != null) {
        Object value = editor.getCellEditorValue();
        setValueAt(value, editingRow, editingColumn);
        removeEditor();
    }
}
  

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

Ответ №1:

Вы не должны играть с редактором ячеек.

Если вы хотите знать, когда данные были изменены в TableModel, вы можете либо:

  1. Переопределите setValueAt(...) метод вашей TableModel для обновления базы данных или
  2. Добавьте TableModelListener в TableModel . Событие будет генерироваться всякий раз, когда производятся обновления табличной модели.

Комментарии:

1. Рад, что это помогло. Не забудьте «принять» ответ, нажав на галочку (рядом с ответом), чтобы люди знали, что проблема решена.