Как отключить автоматическую очистку фона c в графическом приложении Java? - PullRequest
1 голос
/ 06 января 2020

Я Java разработчик с некоторым опытом в графическом программировании, но не очень опытный с самыми последними методами.

Я разрабатываю графическое приложение Java, используя Apache Netbeans IDE 11.2; Приложение включает в себя множество структурированных панелей (разделенные панели, элементы управления вкладками) и выполняет 2D-чертежи на некоторых из них, используя Swing и AWT.

Приложение работало до сих пор. После последних изменений я столкнулся со следующей проблемой:

  • Приложение правильно выполняет все рисунки (полилинии, прямоугольники и т. Д.) На главной панели, но внезапно панель очищается и исходный фон восстановлен, удалив все чертежи.

  • Отладка показывает, что очистка не выполняется ни одним оператором программы. Так что я полагаю, что это происходит за кулисами с помощью AWT или чего-то подобного.

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

Мои вопросы:

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

  • Решением может быть отключение двойной буферизации Swing и ее явное кодирование. Я не уверен в этом. Любой намек?

Большое спасибо за любые предложения.

...