Il perché è dovuto a quando fai il disegno. L'approccio è proprio fondamentalmente sbagliato.Originariamente inviato da gaetano_cont
scusatemi non era mia intenzione scroccare... vi posto il mio codice... mi da errore quando faccio g.drawImage... sapete dirmi perchè?
In quel punto il "Graphics" del componente non esiste ancora!! getGraphics() restituisce null, non c'è ancora nulla di "materializzato" a video.
Anche supponendo, per ipotesi, che il Graphics sia disponibile in quel punto, sarebbe comunque un painting non appropriato, perché il disegno è fatto fuori dal "contesto" appropriato, che nei componenti AWT è paint(Graphics) e nei componenti Swing è paintComponent(Graphics).
Se devi solo visualizzare banalmente una immagine, allora metti il Image in un ImageIcon e poi quest'ultimo ad esempio in un JLabel (che aggiungi da qualche parte nel content pane ovviamente). Oppure usa direttamente ImageIcon (che può caricare una immagine da un path o URL).
Se proprio vuoi fare del "custom painting", la soluzione più tipica è fare una tua classe che estende JPanel e fare l'override di paintComponent(Graphics). Questo è il "contesto" adatto di disegno e qui dentro puoi fare i disegni che vuoi. Chiaramente devi sapere quando e come questo succede, lo spiega il tutorial Sun: Performing Custom Painting

Rispondi quotando