Credo che non abbia l'immagine ma il semplice accumulo di operazioni di disegno sul pannello.
Comunque, per salvare un BufferedImage vale quanto detto da andbin:
ImageIO.write(immagine, "jpg", new File(il percorso);
Per salvare un Image è quasi la stessa cosa. Prima tenta una conversione a RenderedImage (al 99.9% l'immagine "vera" è una RenderedImage):
Codice:
Image immagine = ...
if(immagine instanceof RenderedImage) {
ImageIO.write((RenderedImage)immagine, "jpg", new File(il percorso));
}
altrimenti crei un buffer temporaneo:
Codice:
BufferedImage temp = new BufferedImage(
immagine.getWidth(null),
immagine.getHeight(null),
BufferedImage.TYPE_INT_RGB);
copi su quel buffer l'immagine:
Codice:
Graphics2D graphics = (Graphics2D)temp.createGraphics();
graphics.drawImage(immagine, 0, 0, null);
e salvi il buffer temporaneo:
Codice:
ImageIO.write(temp, "jpg", new File(...));
Nel caso in cui tu non disponga di un'immagine ma solo del contenuto del pannello, tutto ciò che devi fare è creare un BufferedImage delle dimensioni del pannello, prendere il suo Graphics2D e passarlo al metodo "print" del pannello. Il pannello copierà sull'immagine il proprio contenuto e avrai qualcosa di salvabile.