en mi aplicacion, en una ventana determina, tengo la posibilidad de poner una imagen en un jDesktopPane mediante un FileChooser.
Eso lo he logrado poniendo el codigo que veis abajo, en el boton que quiero para abrir la imagen.
Pero si cierro dicha ventana, al volverla abrir, la imagen ya no aparece, logicamente. Me gustaria que dicha imagen se mantenga durante la aplicacion, hasta que o bien se cierre la aplicacion, o bien se abra otra imagen en otra futura ejecucion. Como lo puedo hacer?
Código:
Y aqui os dejo la clase pinta imagen:File fileImagen; private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); int status = fileChooser.showOpenDialog(null); if(status==JFileChooser.APPROVE_OPTION){ File file=fileChooser.getSelectedFile(); if(file!=null){ fileImagen = fileChooser.getSelectedFile(); cargarImagen(this.jDesktopPane1,fileImagen); } } } public void cargarImagen(javax.swing.JDesktopPane jDeskp,File fileImagen){ try{ BufferedImage image = ImageIO.read(fileImagen); jDeskp.setBorder(new PintaImagen(image)); } catch (Exception e){ System.out.println("No cargo imagen, sorry"); } }
Código:
public class PintaImagen implements Border{ private BufferedImage image ; public PintaImagen(BufferedImage image ) { this.image=image;} public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { int x0 = x+ (width-image.getWidth())/2; int y0 = y+ (height-image.getHeight())/2; g.drawImage(image,x0,y0,null); } public Insets getBorderInsets(Component c) { return new Insets(0,0,0,0);} public boolean isBorderOpaque() { return true; } }