Ошибка рендеринга прозрачности Java

В настоящее время я занимаюсь разработкой Java-программы в стиле киоска для отображения погоды, времени, прогноза и т. Д.should выглядеть (снимок экрана сделан до времени обновления)

Image showing required output before the graphical error

Различные разделы создаются как JPanels сpaintComponent() метод переопределен. Они рисуют в градиентном заголовке и полупрозрачном фоне. Тем не менее, когда я изменяю содержимое одной из этих панелей, предыдущий контент остается позади, а не удаляется. Пример показан ниже:

Как вы можете видеть, когда время изменилось с 11:51 на 11:52, числа перекрылись, и фон стал светлее (потому что поверх него был перерисован полупрозрачный фон)

The Graphical Error

Image showing the graphical error

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

Update

Несколько ответов включают очистку области, которая будет нарисована. Пользуюсь ли яg.clear() или жеAlphaComposite.CLEAR это стирает фоновое изображение. это можно увидеть на следующем изображении. Возможно, если бы я мог скопировать фон, прежде чем очистить область, я мог бы перекрасить этот участок фона, а затем соответствующим образом наложить другие изображения. Мысли?

enter image description here

Update 2

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

Ответы на вопрос(3)

Ваш ответ на вопрос