Swing JTree: Кажется невозможным правильно отправить события treeStructureUpdated слушателям модели - PullRequest
3 голосов
/ 01 июля 2011

У меня есть JTree, отображающий мою собственную TreeModel.TreeModel загружается «по требованию» из базы данных (несколько уродливо, поскольку частично сделано на EDT, но это не моя проблема здесь).Существует меню, которое позволяет пользователю выбрать фильтр, который будет применен к дереву.

При изменении фильтра узлы могут быть скрыты посредством TreeModel или могут быть обнаружены новые узлы.Вот где моя проблема - я не вижу разумного способа генерирования подходящих событий treeStructureChanged из модели, так как я не знаю, какие узлы действительно изменились.Кажется, не существует простого способа сообщить слушателям, что вся модель теперь (потенциально) различна.

Есть ли простой способ сообщить всем TreeModelListeners, что вся модель была изменена?(Конечно, я хочу максимально сохранить состояние выбора / расширения).

1 Ответ

1 голос
/ 01 июля 2011

Поскольку вы хотите сообщить, что вся древовидная структура изменилась, отправьте TreeModelEvent для корня дерева каждому слушателю. Метод GenealogyModel fireTreeStructureChanged() является примером, упомянутым в Как использовать деревья: создание модели данных .

...