Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    JfileChooser con preview

    Salve,
    dovrei realizzare un'applicazione che utilizza un jfilechooser, ma vorrei visualizzare l'anteprima del file che sto aprendo.
    Ho scritto in un Jpanel che implementa PropertyChangeListener questo
    codice:
    public void propertyChange(PropertyChangeEvent evt) {
            String propertyName = evt.getPropertyName();
    
    
            // Make sure we are responding to the right event.
            if (propertyName.equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) {
                File selection = (File) evt.getNewValue();
                String name;
    
    
                if (selection == null) {
                    return;
                } else {
                    name = selection.getAbsolutePath();
                }
    
    
                /*
                 * Make reasonably sure we have an image format that AWT can
                 * handle so we don't try to draw something silly.
                 */
                if ((name != null)
                        && name.toLowerCase().endsWith(".jpg")
                        || name.toLowerCase().endsWith(".jpeg")
                        || name.toLowerCase().endsWith(".gif")
                        || name.toLowerCase().endsWith(".png")) {
                    icon = new ImageIcon(name);
                    image = icon.getImage();
                    scaleImage();
                    repaint();
                }
            }
        }
    ovviamente l'ho trovato in rete, ho fatto un semplice copia e incolla

    Mentre nell'azione ho scritto questo
    codice:
    private String acquisisciFile() {
            JFileChooser fileChooser = this.controllo.getVista().getJfileChooser();
            PannelloMiniatura pMiniatura = new PannelloMiniatura(this.controllo.getVista());
           
            pMiniatura.getLabelCarica().setHorizontalTextPosition(SwingConstants.CENTER);
            pMiniatura.add(pMiniatura.getLabelCarica(), BorderLayout.CENTER);
            fileChooser.setAccessory(pMiniatura);
    
    
            fileChooser.addPropertyChangeListener(pMiniatura);
            
            fileChooser.setApproveButtonText("Apri Foto");
            fileChooser.setDialogTitle("Selezionare un file");
            int codice = fileChooser.showOpenDialog(this.controllo.getVista());
            if (codice == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                percorso = file.getPath();
                return percorso;
             } else if (codice == JFileChooser.CANCEL_OPTION) {
                logger.info("Comando apri annullato");
            }
            return null;
        }
    
    public void actionPerformed(ActionEvent e) {      
            PannelloMiniatura pannelloM = (PannelloMiniatura) this.controllo.getVista().getSottoVista(Costanti.PANNELLO_MINIATURA);
            String nomeFile = acquisisciFile();       
            if (nomeFile != null) {
                 icon = new ImageIcon(nomeFile);
                pannelloM.getLabelCarica().setIcon(icon);
    
    }

    Solo che non mi apre l'anteprima... dove sbaglio? qualcuno pò darmi suggerimenti?
    Grazie
    Ultima modifica di gattamelogna; 05-11-2013 a 18:54

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il codice l'hai preso da qua: http://www.javalobby.org/java/forums/t49462.html
    L'ho copincollato pure io e ho fatto una semplicissima classe di test, in questo modo:

    codice:
    import java.awt.*;
    import javax.swing.*;
    
    public class Tester {
       public static void main(String[] args) {
          try {
             UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
          } catch (Exception e) { /* L&F */ }
    
          SwingUtilities.invokeLater( new Runnable() {
             @Override
             public void run() {
                JFileChooser jfc = new JFileChooser();
                ImagePreviewPanel panel = new ImagePreviewPanel();
                jfc.setAccessory( panel );
                jfc.addPropertyChangeListener( panel );
                int ret = jfc.showOpenDialog( null );
             }
          });
       }
    }
    E funziona perfettamente.
    E' possibile che nel tuo programma vengano sollevate delle eccezioni. Prova ad avviare l'applicazione dal prompt dei comandi e vedi se c'è qualche eccezione che viene sollevata.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.