В настоящее время я разрабатываю Java-программу в стиле киоска для отображения погоды, времени, прогноза и т. д. Вот снимок того, как должна выглядеть программа (снимок экрана, сделанный до обновления времени)
Различные разделы создаются как панели JPanel с переопределением метода paintComponent()
. Они рисуют градиентный заголовок и полупрозрачный фон. Однако, когда я изменяю содержимое одной из этих панелей, предыдущее содержимое остается, а не удаляется. Пример показан ниже:
Как видите, при изменении времени с 11 :51 на 11 :52 числа перекрывались, а фон становился светлее (, так как поверх него перерисовывался полупрозрачный фон)
Что мне делать, чтобы предотвратить это совпадение? В конечном счете, я бы предпочел не перерисовывать весь экран, когда отдельная панель обновляет свое содержимое. Я бы предпочел перерисовать только этот конкретный раздел. Было бы легко перекрасить фон, а затем и все компоненты внутри.
Несколько ответов включают очистку области, которую нужно нарисовать. Независимо от того, использую ли я g.clear()
или AlphaComposite.CLEAR
, фоновое изображение стирается. это можно увидеть на следующем изображении. Возможно, если бы я мог скопировать фон до того, как очистил область, я мог бы перекрасить эту часть фона, а затем соответствующим образом наложить другие изображения. Мысли?
Был отправлен ответ, в котором показан полный рабочий пример таймера, наложенного на прозрачную панель и фон. Это очень полезно, однако я не раскрашиваю компоненты sub -вручную. Время, погодные значки и температура — все это JLabels размещено на полупрозрачной -панели.Я бы предпочел не красить отдельные компоненты вручную.