Обнаружение обновлений для объектов, привязанных к (редактируемому) JTable - PullRequest
3 голосов
/ 14 сентября 2011

Каков подходящий метод для обнаружения изменений, внесенных в объект через редактируемую ячейку в JTable?Я хотел бы получить сущность, в которой произошли изменения, чтобы я мог зафиксировать изменения, используя JPA (eclipselink).

Пока я пробовал реализацию TableModelListener.Однако, похоже, что TableModelEvent не предоставляет ссылку на базовый объект (или поставщик данных таблицы), а только на значение (Объект), которое изменилось.

Наличие фона в AS3Я привык писать код, управляемый событиями.Но что является правильным подходом для реализации этого в Java?

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Либо проверьте строку TableModelEvent, запущенную модификацией, и попросите вашу модель создать объект в этой строке, либо запустите другое выделенное событие при обновлении ячейки, содержащее обновленный объект.

См. Учебник Swing для таблиц , чтобы узнать, как создать собственную модель таблицы, расширяющую AbstractTableModel. Это почти всегда лучше, чем использование по умолчанию, и я подумал, что вы уже делали это, потому что вы сказали, что "изменения были сделаны в сущности через редактируемую ячейку" .

1 голос
/ 15 сентября 2011

Оказалось, что существует гораздо более простой способ получить обновленную сущность, если данные (сущности) привязаны к JTable с использованием BindingGroup (как в моем случае):

bindingGroup.addBindingListener( new AbstractBindingListener() {

    @Override
    public void synced(Binding binding) {

        super.synced(binding);

        // the entity object
        Object sourceObject = binding.getSourceObject();   
    } 
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...