Visualizzazione dei risultati da 1 a 5 su 5

Discussione: JFileChooser

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315

    JFileChooser

    Salve,
    è possibile fissare la directory di un jfilechooser dando la possibilità all'utente di scegliere solo il nome del file ed eventualemente l'estesione?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Controlla la documentazione della classe JFileChooser.

    In particolare i metodi setCurrentDirectory() e setFileSelectionMode(), quest'ultimo in accoppiata con la costante FILES_ONLY.


    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
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315
    Li avevo visti quei due metodi, ma cmq mi lascia la possibilità, a partire dal current directory, di sfogliare il file system.

    So che vado "contro natura" (il jfilechooser serve proprio per sfogliare directory e file), ma io vorrei settare la directory e lasciare quella, disabilitando la possibilità di sfogliare le altre.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Uhm... non avevo capito quello che intendevi.
    Mi pare di capire che tu voglia in un qualche modo disabilitare il controllo di navigazione del file system, è così? In pratica, disabilitare la combo box e gli eventuali pulsanti di navigazione rapida...

    Se è così, l'unico modo è estendere JFileChooser e lavorare con i suoi componenti... mi pare che si possa fare, ma sinceramente non l'ho mai provato, né sono mai andato a fondo della faccenda.

    Credo che sia necessario creare una classe che estende FileSystemView in modo da bloccare la visualizzazione alla sola cartella che ti interessa, ma, appunto, non l'ho mai fatto e al momento non ho nemmeno il tempo di effettuare delle prove.


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315
    Si si...ho trovato!!!

    E' necessario creare una classe che estende FileSystemView.

    Allego codice per chi ne avesse bisogno:

    codice:
    import java.io.File;
    import java.io.IOException;
    
    import javax.swing.filechooser.FileSystemView;
    
    /**
     * The Class DirectoryRestrictedFileSystemView.
     */
    public class DirectoryRestrictedFileSystemView extends FileSystemView {
    
        /** The root directories. */
        private final File[] rootDirectories;
    
        /**
         * Instantiates a new directory restricted file system view.
         * 
         * @param rootDirectory
         *            the root directory
         */
        public DirectoryRestrictedFileSystemView( final File rootDirectory) {
    
            this.rootDirectories = new File[] { rootDirectory };
        }
    
        /**
         * Instantiates a new directory restricted file system view.
         * 
         * @param rootDirectories
         *            the root directories
         */
        public DirectoryRestrictedFileSystemView( final File[] rootDirectories) {
    
            this.rootDirectories = rootDirectories;
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see javax.swing.filechooser.FileSystemView#createNewFolder(java.io.File)
         */
        @Override
        public File createNewFolder( final File containingDir ) throws IOException {
    
            throw new UnsupportedOperationException("Unable to create directory" );
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see javax.swing.filechooser.FileSystemView#getRoots()
         */
        @Override
        public File[] getRoots( ) {
    
            return rootDirectories;
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see javax.swing.filechooser.FileSystemView#isRoot(java.io.File)
         */
        @Override
        public boolean isRoot( final File file ) {
    
            for (final File root: rootDirectories) {
                if (root.equals(file )) {
                    return true;
                }
            }
            return false;
        }
    }
    e poi:

    FileSystemView fsv = new DirectoryRestrictedFileSystemView(new File(path));
    JFileChooser chooser = new JFileChooser(fsv);

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 © 2026 vBulletin Solutions, Inc. All rights reserved.