java + Swing: superposición eficiente de rectángulo u otro "sprite"

No estoy muy seguro de cómo expresar esto, así que tengan paciencia conmigo.

Tengo dosJPanels en un contenedorJPanel con unOverlayLayout. AmbosJPanels en el contenedor anulapaint(Graphics).

El fondoJPanel es opaco y dibuja algunos gráficos bastante complicados, por lo que toma un "largo" tiempo (10s o 100s de milisegundos) para renderizar.

La parte superiorJPanel es transparente y solo dibuja un rectángulo o línea o una forma simple basada en la entrada del mouse, por lo que es realmente rápido.

¿Hay alguna forma de configurar las cosas para que cuando cambie la forma simple en el panel superior, no vuelva a dibujar el panel inferior? (por ejemplo, de alguna manera almacena en caché el panel inferior)

Estoy vagamente familiarizado con conceptos como bitblt, doble búfer y dibujo XOR, pero no estoy seguro de qué aplicar aquí.