JfileChooser con preview

di
Anonimizzato6441
il
6 risposte

JfileChooser con preview

Salve,
dovrei realizzare un'applicazione MVC che carica un'immagine da file. A tal proposito ho usato jfilechooser, ma vorrei aggiungere a questi l'anteprima dell'immagine che viene selezionata.
Ho quindi creato una classe che estende JPanel ed implementa PropertyChangeListener implementando il relativo metodo così

public void propertyChange(PropertyChangeEvent evt) {
        Icon icona = null;
        String propertyName = evt.getPropertyName();
     
        if (propertyName.equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) {
            File newFile = (File) evt.getNewValue();
            if (newFile != null) {
                String path = newFile.getAbsolutePath();
                if (path.endsWith(".jpg") || path.endsWith(".gif") || path.endsWith(".png")
                        || path.endsWith(".bmp") || path.endsWith(".jpeg")) {
                    try {
                        BufferedImage img = ImageIO.read(newFile);
                        float widthNew = img.getWidth();
                        float heightNew = img.getHeight();
                        float scale = heightNew / widthNew;
                        widthNew = minWidth;
                        heightNew = (widthNew * scale);
                        icona = new ImageIcon(img.getScaledInstance(Math.max(1, (int) widthNew),
                                Math.max(1, (int) heightNew), Image.SCALE_SMOOTH));

                         } catch (IOException e) {
                        logger.info("Si è verifiacto qualche errore\n" + e);
                    }

                }
            }

        
                labelMniaturaFoto.setIcon(icona);
                this.repaint();
             }
    }


mentre nell'azione ho questo:
private String apriFile() {
        Vista vista = this.controllo.getVista();
        JFileChooser fileChooser = vista.getJfileChooser();

        PannelloMiniaturaJFileChooser pannelloMfc = new PannelloMiniaturaJFileChooser(vista);
	pannelloMfc.setPreferredSize(new Dimension(150, 150));
        pannelloMfc.setBorder(BorderFactory.createLineBorder(Color.GRAY));
        pannelloMfc.setBorder(BorderFactory.createTitledBorder("Anteprima123"));
      
        fileChooser.setAccessory(pannelloMfc);
        fileChooser.addPropertyChangeListener(pannelloMfc);       
        int codice = fileChooser.showOpenDialog(vista);
        
	if (codice == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            percorso = file.getPath();
            image = new Immagine(file);
            Modello modello = this.controllo.getModello();
            modello.putBean(Costanti.IMMAGINE, image);


            return percorso;
          } else if (codice == JFileChooser.CANCEL_OPTION) {
            logger.info("Comando apri annullato");
        }

        fileChooser.setSelectedFile(null);

        return null;
    }
}
perchè il tutto non funziona?? se mi va bene riesco a vedere la prima schermata del jfilechooser, dopo di che se provo ad aprire il file lancia eccezioni varie
grazie per la disponibilità

Saluti

6 Risposte

  • Re: JfileChooser con preview

    Se ti può servire...
    http://www.javalobby.org/java/forums/t49462.htm
  • Re: JfileChooser con preview

    Grazie per aver risposto,
    ho già visto quella pagina ma mi dava un pò di problemi, perché non mi faceva ridimensionare l'immagine come desideravo, quindi ho optato per quest'altra soluzione che comunque non funziona.
    Altri suggerimenti?
  • Re: JfileChooser con preview

    Non avevi detto che volevi fare il resize dell'immagine direttamente dal preview.
    da dove hai preso l'esempio?
    Ciao.
  • Re: JfileChooser con preview

    Il mio codice non è altro che un copia/incolla di questo esempio
    http://e-blog-java.blogspot.it/2011/03/how-to-play-with-jfilechooser-open_24.html
    grazie per la disponibilità
  • Re: JfileChooser con preview

    Bene dopo aver ricopiato il pezzo di codice tutto, o quasi, sembra funzionare... solo che adesso se apro una prima volta il filechooser e poi voglio aprire un'altro file mi si riapre la scelta lasciando selezionato il file aperto precedentemente
    come posso risolvere ciò?
    Grazie
  • Re: JfileChooser con preview

    Fai un debug e vedi perché rimane memorizzato il file precedente

    Inviato dal mio GT-I9100 con Tapatalk 2
Devi accedere o registrarti per scrivere nel forum
6 risposte