Выбор JTree без генерации события - PullRequest
0 голосов
/ 07 марта 2011

У меня есть JTree, JTable и JList, которые отображают один и тот же набор объектов, но в другом порядке и с различной информацией. Если элемент выбран из одного из Компонентов, я хочу выбрать тот же объект на двух других Компонентах (то есть они должны быть выделены). Естественно, я отслеживаю события выбора с помощью слушателя. Вот проблема, когда компонент извлекает выбранный объект, я должен убедиться, что объект выбран в других компонентах, вызывая методы выбора для них. Это затем уведомит слушателей выбора о двух других компонентах. Но каждое из этих событий, в свою очередь, будет вызывать события выбора для компонентов, отличных от самого себя, вызывая бесконечный цикл, проходящий между тремя компонентами.

Я вижу одно решение - использовать логический флаг, и заставить слушателей не распространять выбор, если флаг установлен. Однако это кажется громоздким и не элегантным. Есть ли способ просто сказать JTree, JTable и JList сделать выбор, но не запускать какие-либо события (в отличие от запуска события, а затем его перехвата и остановки с логическим флагом)?

Ответы [ 2 ]

1 голос
/ 07 марта 2011

Взгляните на SharedModelDemo .Я думаю, что он делает то, что вы ищете.

0 голосов
/ 07 марта 2011

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

...