Ho un JFrame, dentro al quale c'e' un JPanel che chiamerò A, e dentro ad A c'e' un altro JPanel che chiamerò B.

Alla pressione di un bottono posto su A, in B viene caricata un'immagine di sfondo. I problemi con questa immagine sono i seguenti:

1.L'immagine non viene visualizzata finchè non iconizzo (o nascondo) la finestra e poi la rimostro, evidentemente perchè il metodo paint non viene invocato altrimenti
2.Una volta visualizzata l'immagine, se ad esempio trascino una qualunque finestrella sopra l'immagine questa viene "sfumata" e deformata, per poi tornare allo stato normale sempre chiudendo e riaprendo il frame.

La classe che implementa il pannello B è fatta all'incirca cosi:

codice:
public class B extends JPanel {
    Image sfondo;
    public B() {sfondo = null;}
    
    public void paint (Graphics g) {
        if (sfondo!=null)
            g.drawImage(sfondo,0,0,this);
    }

    public void setSfondo (Image i) {sfondo = i;}
}
il metodo setSfondo viene invocato alla pressione del bottone apposito nel JPanel A.

Immagino che una possibile soluzione sia ridisegnare l'immagine piu spesso, ma non so quando di preciso
Come faccio a renderla stabile?