JDialog избавиться и перекрасить проблему
В приложении jnlp мы создаем модальное всплывающее окно, расширяемое из javax.swing.JDialog, и вызываем dispose(), чтобы при необходимости скрыть диалог. Однако иногда конечный клиент получает проблему перекраски. Диалог на самом деле не исчезает, и его родительское окно выглядит грязным. Я не мог воспроизвести, но это происходило много раз на конечном клиентском ПК. Я предполагаю, что есть две возможные причины:
- В нашем приложении есть нить, обновляющая курсор напрямую. Тем не менее, я не могу доказать, что эта тема является основной причиной проблемы.
- Периодически у нас есть другой процесс, интенсивно использующий процессор за несколько секунд. Я попытался загрузить процессор, но не смог воспроизвести проблему.
Любой совет для меня в этом случае?
Спасибо!
1 ответ
Похоже, ответ в вопросе;-)
Наличие потока (не EDT), обновляющего пользовательский интерфейс (курсор в вашем случае), может привести к такого рода проблемам.
Следовательно, убедитесь, что ваш поток вызывает SwingUtilities.invokeLater()
(или же invokeAndWait()
в зависимости от ваших потребностей).
Другая возможность (но это во многом зависит от того, что делает ваш поток, без подробного описания с вашей стороны, трудно сказать) будет использовать SwingWorker
вместо нити.