Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    76

    FileDialog e JFileChooser

    ciao ragazzi nella mi applicazione java devo utilizzare un componente per navigare il file system e scegliere una directory. Posso utilizzare un JFileChooser o un FileDialog...con il JFileChooser funziona tutto bene, solo che ci mette molto piu tempo del FileDialog per aprire la finestra di dialogo per la scelta del file, almeno la prima volta che lo utilizzo(non so perche...). Con il FileDialog non ho questo problema, sembra essere molto piu veloce, ma ho invece il problema che riesco a far aprire solo file e non directory...ora cercando un po in rete ho trovate che per consentire al FileDialog di selezionare solo directory bisogna impostare una properties del sistema con l'istruzione
    System.setProperty("apple.awt.fileDialogForDirecto ries", "true");
    tuttavia nn mi funziona o stesso...forse perche tale proprietà non eiste(infatti sulla documentazione on line si dice che è una property impostata di default a false, ma se provo a farmela stampare pima che la imposti con 'istruzione precedente mi stama null).
    Qualche idea su come risolvere? GRAZIE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: FileDialog e JFileChooser

    Originariamente inviato da alf83
    devo utilizzare un componente per navigare il file system e scegliere una directory. Posso utilizzare un JFileChooser o un FileDialog...
    FileDialog è di AWT ed è un componente "heavyweight" (usa il componente di browsing "nativo" del sistema) mentre JFileChooser è di Swing ed è un componente "lightweight" (è disegnato in Java e il suo aspetto/comportamento dipende dal Look&Feel).

    Originariamente inviato da alf83
    con il JFileChooser funziona tutto bene, solo che ci mette molto piu tempo del FileDialog per aprire la finestra di dialogo per la scelta del file, almeno la prima volta che lo utilizzo(non so perche...)
    FileDialog è certamente più veloce di JFileChooser, come ho detto usa il componente di browsing nativo del sistema. JFileChooser è un pochino più lento. Ma non mi sembra così esageratamente lento. Sul vecchio catorcio di PC che ho in ufficio, ci mette poco più di 1 secondo ad aprirsi. A sfogliare le directory in effetti non è immediato e così responsivo come si vorrebbe (parlo ancora del mio PC d'ufficio ...). Ma non la vedo come una cosa così grave. A meno che l'utente debba passare tutto il suo tempo ad aprire chooser e sfogliare directory.

    Originariamente inviato da alf83
    riesco a far aprire solo file e non directory...
    Il poter selezionare solo directory lo fa solo JFileChooser. FileDialog no. L'approccio di AWT è di usare solo le funzionalità che sono comuni a tutte le piattaforme. Se su una sola piattaforma il componente di browsing fosse capace di selezionare le directory ma su altre no, AWT non prende in considerazione, in modo generico, questa funzionalità.

    Originariamente inviato da alf83
    ora cercando un po in rete ho trovate che per consentire al FileDialog di selezionare solo directory bisogna impostare una properties del sistema con l'istruzione
    System.setProperty("apple.awt.fileDialogForDirecto ries", "true");
    tuttavia nn mi funziona o stesso...forse perche tale proprietà non eiste
    Si capisce che è una proprietà dipendente dal sistema (quel "apple" ....). Anche ammesso che sui Mac funzioni, non ti risolve in modo assoluto il problema. Quella proprietà non è gestita (e non è impostata) di default su altre piattaforme.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    76
    ti ringrazio molto per la risposta assolutamente precisa che mi hai dato... Mi viene il dubbio che sia io che magari utilizzo male il JFileChooser... semplicemente quando devo utilizzarlo faccio:

    JFileChooser fileChooser = new JFileChooser();
    fileChooser.setFileSelectionMode(JFileChooser.DIRE CTORIES_ONLY);
    int result = fileChooser.showOpenDialog(ij)
    ........

    Ma come ti ripeto mi sembra un po lento, eppure lo provo sul portatile che è un acer con un processore a 1,8 GHz; non si tratta di attendere un paio di secondi ma per lo meno 6 o 7. Questo la prima volta che lo apro...se nel corso dell'applicazione provo effettivamente a riaprirlo una seconda o terza volta effettivamente va abbastanza veloce.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da alf83
    Mi viene il dubbio che sia io che magari utilizzo male il JFileChooser... semplicemente quando devo utilizzarlo faccio:

    JFileChooser fileChooser = new JFileChooser();
    fileChooser.setFileSelectionMode(JFileChooser.DIRE CTORIES_ONLY);
    int result = fileChooser.showOpenDialog(ij)
    ........
    No no, è corretto!

    Originariamente inviato da alf83
    Ma come ti ripeto mi sembra un po lento, eppure lo provo sul portatile che è un acer con un processore a 1,8 GHz; non si tratta di attendere un paio di secondi ma per lo meno 6 o 7.
    In effetti è molto molto strano (e non dovrebbe certo essere così). Potrebbe essere un bug e in effetti .... ho trovato questo:

    JFileChooser takes a long time to instantiate, at least the first time
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    76
    Grazie...ancora una volta mi sei stato di grande aiuto...ho risolto il problema guardando il link che mi hai inviato.... quando creo il JFileChooser faccio

    JFileChooser fileChooser = new JFileChooser(){
    public void updateUI() {
    putClientProperty("FileChooser.useShellFolder", Boolean.FALSE);
    super.updateUI();
    }
    };

    Ed è effettivamente molto piu veloce...effettivamente la finestra di dialog è un po meno elaborata graficamente, ma a me va benissimo cosi(...per chi fosse comunque interessato sul link che mi hai inviato crdo si spieghi anche come risolvere questo problemuccio). GRAZIE

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.