Shoto ha scritto:
quando vado ad eseguire non visualizza l'immagine. l'errore avviene nel metodo disegna
Graphics g = this.getGraphics();
il valore è null quindi solleva un eccezione. perchè non recupera la Graphics se la classe estende canvas non ci dovrebbero essere problemi?
Il Graphics di un componente non è un qualcosa di scontato che hai sempre, in qualunque momento/punto. Il Graphics viene creato dal framework e solo DOPO che il componente diventa "displayable", ovvero dopo che è stato aggiunto in un contenitore e alla fine la finestra che lo contiene è diventata visibile e quindi sono state allocate risorse native.
Dal javadoc:
public Graphics getGraphics()
Creates a graphics context for this component.
This method will return null if this component is currently not displayable.
Inoltre il vero "contesto" di disegno in AWT è il paint(Graphics). Se vuoi disegnare sul Canvas DEVI ridefinire questo metodo.
Disegnare "al volo" prendendo il Graphics è una tecnica avanzata che si usa quando si voglio realizzare effetti o ottimizzazioni particolari.
In altre parole: devi ancora chiarirti le idee sul painting nei componenti AWT/Swing.
Shoto ha scritto:
Non badate troppo al codice Disordinato
Sì, è parecchio brutto, come minimo per il fatto che una classe che estende Canvas (quindi solo un "componente") vada a creare un JFrame.