JDialog избавиться и перекрасить проблему

В приложении jnlp мы создаем модальное всплывающее окно, расширяемое из javax.swing.JDialog, и вызываем dispose(), чтобы при необходимости скрыть диалог. Однако иногда конечный клиент получает проблему перекраски. Диалог на самом деле не исчезает, и его родительское окно выглядит грязным. Я не мог воспроизвести, но это происходило много раз на конечном клиентском ПК. Я предполагаю, что есть две возможные причины:

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

Любой совет для меня в этом случае?

Спасибо!

1 ответ

Похоже, ответ в вопросе;-)

Наличие потока (не EDT), обновляющего пользовательский интерфейс (курсор в вашем случае), может привести к такого рода проблемам.

Следовательно, убедитесь, что ваш поток вызывает SwingUtilities.invokeLater() (или же invokeAndWait() в зависимости от ваших потребностей).

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

Другие вопросы по тегам