В Swing, как обеспечить приоритет взаимодействия с пользователем, когда многие компоненты постоянно запрашивают перерисовку? - PullRequest
0 голосов
/ 10 сентября 2009

Swing вопрос новичка ...

У меня есть система, в которой в окне находится большое количество независимых виджетов (думаю> 100), получающих асинхронные обновления и затем запрашивающих перерисовку. Когда эти виджеты получают обновления очень и очень быстро, они, кажется, перегружают поток событий Swing, так что взаимодействие с пользователем (например, щелчок правой кнопкой мыши для отображения контекстного меню) занимает много времени.

Я уверен, что для этого есть шаблон.

Несколько решений, о которых я мог подумать: 1) Приоритеты на события (сомнение, что поддерживается) 2) Написание собственного менеджера перерисовки для замедления элементов из моих виджетов. 3) Пусть компоненты запросят перерисовку из другого класса, и этот класс каким-то образом вычислит грязную область и свяжется с Swing.

Спасибо!

1 Ответ

2 голосов
/ 10 сентября 2009

В Swing несколько запросов на перерисовку объединены в один, если это возможно. По этой причине я не думаю, что несколько событий перерисовки перегружают ваше приложение. Возможно ли, что в EDT выполняется что-то еще, а не только операции интерфейса?

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

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