Ciao, ho un problema con la visualizzazione di un oggetto Graphics su un JPanel.
Su un JPanel carico un'immagine, dopodichè dovrei disegnare altre cose su di essa.
Poichè se definivo g=myPanel.getGraphics() avevo dei problemi se altre finestre si sovrapponevano
al mio frame, allora ho fatto l'override di paintComponent:

codice:
    private JPanel myPanel = new JPanel(){
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            drawOnPanel(g);
        }
    };
e richiamo questo metodo:
codice:
    private void drawOnPanel(Graphics g){
        if(condition1){
            g.drawImage(img, 0, 0, myPanel);
            myAlgorithm.drawSomething(g);
        }
        if(condition2){
           myAlgorithm.drawSomethingElse(img, g);
        }
        if(condition3){
            runnableClassInstance.prepareToDraw(g);
            t=new Thread(runnableClassInstance);
            t.start();
        }       
    }
I problemi sono 2:
1) i metodi myAlgorithm.drawSomething(g) e myAlgorithm.drawSomethingElse(g)
richiamano a loro volta vari metodi g.draw(....) e durante l'elaborazione disegnano e cancellano
molte linee (ad esempio: disegno una linea rossa, la cancello, ne disegno una gialla, la cancello,
ne disegno una blu, fine). Col codice attuale su myPanel vedo soltanto il risultato finale del processo
(cioè la linea blu). Come faccio a visualizzare l'"evoluzione" dei grafici? Qualcuno può farmi un semplice esempio?
2) il Thread nel ramo condition3 dovrebbe generare e disegnare una serie di shape, ma non vedo nulla.
(il metodo funziona perchè definendo g=myPanel.getGraphics() come facevo all'inizio visualizzavo tutto)

Se potete darmi un consiglio, vi ringrazio.