2014-04-11 1 views
12

Sto sviluppando un'applicazione Java utilizzando JavaFX per la sua interfaccia utente.Disabilitare i file nascosti utilizzando FileChooser da JavaFX

Quando uso la classe FileChooser per caricare un file CSV dal disco rigido del computer in Os X Mavericks, la finestra di dialogo mostra tutti i file e le cartelle, anche quella nascosta che crea molto rumore e rende davvero difficile trovare il file desiderato

Questo screenshot illustra cosa sto parlando:

enter image description here

credo che questo potrebbe essere più un problema di OS X, ma non capisco come risolvere il problema, almeno io non lo faccio capire come posso risolvere il problema con la classe FileFooser di JavaFX.

Ecco il mio codice:

Stage stage = new Stage(); 
FileChooser fileChooser = new FileChooser(); 
fileChooser.setTitle("Open File"); 
fileChooser.getExtensionFilters().addAll(
     new FileChooser.ExtensionFilter("Comma-Separated Values (CSV)", "*.csv") 
); 
fileChooser.setInitialDirectory(
     new File(System.getProperty("user.home")) 
); 
File selectedFile = fileChooser.showOpenDialog(stage); 

Aggiornamento

Questo è il modal Google Chrome per aprire i file.

enter image description here

+2

Ciao Dave, penso che il problema sia relativo al sistema operativo. Hai provato ad aprire una finestra di dialogo da un'altra app. Puoi anche provare [this] (http://apple.stackexchange.com/questions/99213/is-it-possible-to-always-show-hidden-dotfiles-in-open-save-dialogs). JFileChooser ha una proprietà per gestire questo comportamento setFileHidingEnabled ma non riesco a trovare qualcosa di simile per javafx, quindi probabilmente prende il comportamento del sistema operativo. Cordiali saluti – ELavicount

+2

Ciao @elavicount, ho già controllato l'opzione JFileChooser e hai ragione, JavaFX sembra non avere un'opzione simile. Quindi non lo so, forse non è posible in OS X perché il filtro funziona abbastanza bene su Windows. –

+0

Chiedo consiglio agli sviluppatori JavaFX sulla [mailing list open-jfx] (http://mail.openjdk.java.net/mailman/listinfo/openjfx-dev) a riguardo. – jewelsea

risposta

1

Dopo aver esaminato le origini ... FileChooser è implementato su finestre di dialogo native e completamente non personalizzabile.

Quindi, no, non è possibile forzare la finestra di dialogo per mostrare/nascondere i file nascosti.

All'interno FileChooser finestra ci dovrebbe essere una voce di menu contestuale per mostrare/nascondere loro, ma non si può controllare questa opzione dall'applicazione

Ad esempio, ecco come appare su Linux:

FileChooser context menu

0

Hai provato nascondere tutti i file nascosti nel Finder -programma sulla macchina OS X? Quindi: non usando JavaFX, ma usando il programma Finder?

+0

Non capisco, perché dovrei nascondere i file con il finder? Forse non capisco cosa intendi. –

+0

Suppongo che JavaFX avvii alcune istanze di Finder per consentire all'utente di selezionare un file (che lo fa apparire/percepire come l'effettiva applicazione del Finder), invece di averne scritto uno proprio. Se questo è effettivamente il caso (non sono sicuro al 100%), le tue preferenze del programma Finder (come nascondere i file) rifletteranno il modo in cui si comporta il selettore di file JavaFX. Sto solo cercando di aiutare –

+1

Oh capisco, ma no, non funziona in questo modo. Grazie mille. –

0

So che è tardi per il gioco, ma nessuna delle risposte spiega realmente la situazione di MacOS.

Le finestre di dialogo di apertura/salvataggio in JavaFX sono finestre di dialogo native (implementate come "fogli"). Proprio come Finder non ha l'opzione "Mostra file nascosti", anche queste finestre di dialogo non lo fanno. Ci sono diverse soluzioni:

  1. scorciatoie da tastiera relativamente sconosciuto, disponibile dal Mavericks: View Hidden Files in Mac Open and Save Dialog Boxes. (Mi sono appena imbattuto in questo, ho sempre usato il n.)

  2. interruttore della riga di comando nel terminale:

    • nascondi Mostra ->defaults write com.apple.finder AppleShowAllFiles YES, o
    • nascondere ->defaults write com.apple.finder AppleShowAllFiles NO

tuo manuale deve essere sufficientemente consapevoli del queste alternative; non è possibile personalizzare la finestra di dialogo di apertura/salvataggio nativa per fornire un pulsante per farlo.