Ответ Эндрю Томпсона - это «типичный» способ сделать то, что вы хотите.Однако, если вы хотите погрузиться глубже в глубины Swing ...
Одна из вещей, которую super.paintComponent () делает (в конце концов), это получение JComponent.paintComponent()
, что вызывает ComponentUI.update()
.В Javadocs написано (курсив добавлен мной):
"По умолчанию этот метод заменит указанный компонент цветом фона (, если его непрозрачное свойство равно true ), а затем немедленно вызовет paint."
Итак, попробуйте позвонить setOpaque(false)
.Однако это часто приводит к другим проблемам, например, когда вы действительно делаете хотите стереть то, что было нарисовано ранее.