Salve a tutti.
Ho tre file, uno chiamato Main.java, uno GPanel.java e uno Grafo.java.
Il Main crea un oggetto Grafo e un oggetto GPanel, passandogli il Grafo come argomento. Compito della classe GPanel è disegnare il grafo.
Nella classe GPanel ho ridefinito il metodo paintComponent, che ha l'esclusivo compito di passare il proprio contesto grafico (g) al grafo, tramite il metodo draw(Graphics g) di quest ultimo.
Quest'ultimo pensa poi a disegnare vertici e archi, secondo la sua composizione interna.
Il problema è che il programma genera una NullPointerException nel file GPanel.java, proprio quando chiama grafo.draw(g).
Ho pensato che il problema possa essere nel costruttore di GPanel, fatto così:
dove grafo è dichiarato come private Grafo grafo;codice:public GPanel(Grafo g) { grafo = g; }
Ho come l'impressione che "grafo = g" non esegua né una copia esatta del grafo, né gli assegni lo stesso indirizzo di memoria. Sbaglio?
Come posso risolvere? Non mi va di dichiarare il grafo nel Main di tipo pubblico, mi sa tanto di cattiva programmazione. Anche perché non posso renderlo final dato che dentro Main deve essere modificato.
Consigli?