Существуют ли какие-либо стандартные методы и / или примеры свертывания нескольких событий в Java? - PullRequest
3 голосов
/ 29 ноября 2011

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

У меня вопрос, есть ли стандартные методы для этого. Если так, то любой пример будет приветствоваться, потому что я не смог его найти. (Может быть, разрушение не является правильной терминологией?)

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Я считаю, коллапс - правильный термин. Пример класса из библиотек Java Core, который реализует такое поведение: RepaintManager. Я бы проверил, что это исходный код , чтобы увидеть, как он сворачивает несколько запросов на перерисовку.

0 голосов
/ 30 ноября 2011

Прежде чем делать что-либо подобное, вы должны убедиться, что это действительно необходимо.

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

Поскольку обратные вызовы всегда находятся в потоке событий Swing (awt), вам не нужно беспокоиться о параллелизме.

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