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