AbstractTableModel setValueНе запускается при нажатии кнопки Jbutton - PullRequest
3 голосов
/ 05 апреля 2011

У меня есть пользовательская TableModel, которая расширяет AbstractTableModel.

public class IndicatorPropertyTableModel extends AbstractTableModel

Функция setValueAt, которую я написал, запускается соответствующим образом в тех случаях, когда вы вводите новое значение в редактируемую ячейку и затем переходите к другой ячейке.Проблема, с которой я столкнулся, заключается в том, что для последней редактируемой ячейки пользователь немедленно щелкает кнопку JButton, чтобы продолжить.Это не вызывает функцию setValueAt, таким образом, не сохраняя данные.Есть ли хороший способ гарантировать, что это значение всегда сохраняется, когда пользователь сразу же нажимает кнопку после редактирования ячейки?Функция setValueAt ниже для справки, если необходимо.

public void setValueAt(Object value, int row, int col) {
    if (value == null)
        return;
    if (col == 0) {
        //this.indicatorArguments[row].setIsSelected(value);
    } else if (col == 2) {
        this.indicatorArguments[row].setValue(value);
    }
    this.fireTableCellUpdated(row, col);
}

Спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Я предполагаю, что ваша кнопка находится за пределами стола.

В прослушивателе событий или действии вашей кнопки вам понадобится ссылка на таблицу. В этой таблице вы можете спросить, возвращает ли isEditing значение true. Затем вы получите текущий редактор и после проверки последнего введенного значения либо вызовете stopCellEditing , чтобы зафиксировать значение, либо cancelCellEditing , чтобы отменить значение.

Короче говоря:

if(table.isEditing()){
  table.getCellEditor().stopCellEditing();
}

всегда будет фиксировать еще не введенные значения.

1 голос
/ 05 апреля 2011

Проверка, редактирует ли таблица, требует, чтобы вы добавили код ко всем кнопкам в вашем GUI.

Возможно, вы сможете использовать простое однострочное решение, которое избегает этого.Выйти Таблица Стоп Редактирование .

...