В Java, можно ли вызывать подпрограмму каждый раз, когда событие-диспетчер-поток возвращается из обработки входного события? - PullRequest
0 голосов
/ 09 мая 2011

Я работаю над графическим интерфейсом, и у меня есть процедура для обновления дисплея, когда что-то меняется под ним:

void update() {
    if (needsUpdating) {
        // ...
        needsUpdating = false;
    }
}

Я стараюсь избегать вызова update () «слишком часто», т. Е. Если многие свойства установлены последовательно, я бы предпочел, чтобы update () вызывался только один раз.

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

Ответы [ 2 ]

1 голос
/ 09 мая 2011

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

http://tips4java.wordpress.com/2009/08/30/global-event-listeners/

Реальная проблема, кажется, в дизайне вашего приложения:

Я мог бы сделать это вручную, но у меня есть так много обработчиков событий, и я знаю, что я буду забыть

попытайтесь моделировать эти "многие" на отдельные части и четко определить, какая часть должна запускать обновление в какое время. На самом деле, нет никакой возможности обойти такую ​​модель, какой бы ни была реализация фактического прослушивания, если вы выходите за рамки самых простых приложений. Для начала см. F.i.

https://softwareengineering.stackexchange.com/questions/71022/what-is-good-programming-practice-for-structuring-java-project

0 голосов
/ 09 мая 2011

Вы можете использовать свою собственную очередь событий, создав подклассы EventQueue .С его помощью контролируйте все события и делайте свои обновления, когда захотите.См. Как заменить AWT EventQueue собственной реализацией .

Но я не понимаю ваш вариант использования: Swing производит обновления графического интерфейса для всех событий, почему вы хотите делать свои собственные?1007 *

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