Originariamente inviato da tommisceddu
ma la dichiarazione di grafo è proprio quella che hai scritto?
"private Grafo grafo;"

senza inizializzazione? tipo
"private Grafo grafo = new Grafo ();"

prova magari con un bel
"this.grafo = g;"
che all'interno di un costruttore è sempre meglio anche se non so se cambi qualcosa!

sì, ho dichiarato grafo come "private Grafo grafo;", senza inizializzarlo.
Non ho messo il new Grafo() perché penso non serva, visto che nel costruttore ho fatto come hai detto tu, grafo = g (il this è inutile, no?).
Quello che non capisco è il significato di "grafo = g;".
Cosa fa esattemente?
Assegna lo stesso indirizzo di memoria di g a grafo?
Crea una copia di g e la assegna a grafo?


Quando scrivo
codice:
    public GPanel(Grafo g) {
        grafo = g;
    }
g viene passato come una copia dell'oggetto di Main o è lo stesso oggetto?