Отдельные перерисовки в AWT - PullRequest
0 голосов
/ 12 июня 2011

В документах «Рисование в AWT и Swing» указано следующее:

«Если в компоненте происходит несколько вызовов repaint () до обработки начального запроса на перерисовку, несколько запросов могут бытьсвернуто в один вызов update (). "

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

РЕДАКТИРОВАТЬ: Документы далее утверждают это: «Алгоритм определения, когда несколько запросов должны быть свернуты, зависит от реализации».

Моя проблема в том, что я на мобильной платформе, которая выполняет отдельные вызовы для перерисовки, и я 'пытаюсь повторить поведение на рабочем столе.

Ответы [ 2 ]

0 голосов
/ 12 июня 2011

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

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

Или, если у вас проблемы с анимацией, используйте SwingТаймер.В учебнике также есть раздел о таймерах.

0 голосов
/ 12 июня 2011

Боюсь, алгоритм рисования довольно жестко запрограммирован в свинге / awt, и они предлагают только разные хуки для разных целей.Вы можете использовать этот метод на свинге, который бы предлагал то, что вы хотите, но, к сожалению, нет ничего хорошего.Вы можете попробовать смешать awt / swing, но это обычно не рекомендуется и может привести к странному поведению в некоторых случаях, как я слышу

PS: И для людей, спрашивающих, ПОЧЕМУ вы этого хотите: Некоторые приложения (в основном игры)нужны синхронные перерисовки, чтобы их внешний вид соответствовал внутреннему состоянию - например, JScrollbar также использует его внутренне (например, я не смотрел на рассматриваемый код, так что возьмите его с толку соли - хотя я понимаю,почему это может быть полезно в данном конкретном случае)

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