Vediamo se riesco, nel frattempo, a darti qualche spiegazione.
Diciamo che tutti i componenti grafici (Frame, Pannelli, Bottoni, ecc) hanno un oggetto che si occupa di disegnarli a video. Questo particolare oggetto è responsabile del disegno a video del componente ed entra in gioco ogni volta che c'è bisogno di visualizzare il componente (ad esempio, se ho un pannello a cui è stata sovrapposta una finestra, nel momento in cui sposto la finestra è necessario ridisegnarlo a video, affinchè l'utente lo veda sul monitor). Questo oggetto, quindi, viene chiamato in causa dal sistema operativo, che gli dice "ridisegna il componente perchè ora è visibile a video".
Questo oggetto si chiama Graphics e, come tutti gli oggetti Java, possiede dei metodi che permettono di manipolarlo.
Dato che è il sistema operativo a "comandare" questo oggetto, non ha molto senso che noi ce ne creiamo uno: sfruttiamo direttamente quello che ci viene fornito. Per andarlo ad utilizzare, quindi, dobbiamo ridefinire il metodo che usa Java per dire al Graphics di agire. Questo metodo si chiama paint() e, guarda caso, prende proprio un parametro di tipo Graphics.
Questa è la firma del metodo:
codice:
public void paint(Graphics g)
Ridefinendo questo metodo, quindi, possiamo andare a manipolare il modo in cui verrà ridisegnato il componente che a noi interessa (nel tuo caso, il pannello o la finestra dove vuoi che venga disegnata l'immagine).
L'oggetto Graphics possiede un metodo apposito per fare in modo che sul componente venga disegnata un'immagine: il metodo si chiama drawImage() e vuole un po' di parametri per sapere come, dove e che immagine disegnare.
L'elenco delle firme di quel metodo le trovi nella documentazione che ti ho linkato.
Quella più espressiva, comunque, utilizza questa serie di parametri:
codice:
public void drawImage(Image img, int posX, int posY, int width, int height, ImageObserver obs)
img: l'immagine da disegnare sulla superficie del componente
posX: la posizione orizzontale dell'angolo superiore sinistro
da cui cominciare a disegnare l'immagine
posY: la posizione verticale dell'angolo superiore sinistro
da cui cominciare a disegnare l'immagine
width: larghezza dell'immagine
height: altezza dell'immagine
obs: il componente che sarà responsabile dell'immagine.
Quindi, per poter disegnare un'immagine di sfondo, è necessario ridefinire il metodo paint() (che è il metodo chiamato da Java ogni volta che è necessario ridisegnare il componente) e utilizzare i metodi dell'oggetto Graphics che gli viene passato, in modo che vada effettivamente a disegnare l'immagine che vogliamo, come vogliamo.
Vediamo, quindi, l'esempio (uguale a quelli postati sopra):
codice:
public class MiaFinestra extends Frame {
...
private Image mioSfondo;
...
public void paint(Graphics g) {
g.drawImage(mioSfondo, 0, 0, mioSfonto.getWidth(this), mioSfondo.getHeight(this), this);
}
}
Spero di esserti stato utile.
Ciao.