2014-04-11 49 views
12

我正在開發一個使用JavaFX的Java應用程序作爲它的用戶界面。使用JavaFX中的FileChooser禁用隱藏文件

當我使用FileChooser類從Os X Mavericks中的計算機硬盤加載CSV文件時,對話框向我顯示所有文件和文件夾,即使是隱藏的文件和文件夾也會產生大量噪音並且很難找到所需的文件。

這張截圖說明了什麼我談論:

enter image description here

我認爲這可能是更多的是OS X的問題,但我不知道如何解決,至少我不瞭解如何使用JavaFX FileChooser類修復它。

這裏是我的代碼:

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); 

更新

這是谷歌Chrome模式打開文件。

enter image description here

+2

嗨戴夫,我認爲問題是操作系統相關。你有沒有嘗試從另一個應用程序打開對話框。你也可以嘗試[this](http://apple.stackexchange.com/questions/99213/is-it-possible-to-always-show-hidden-dotfiles-in-open-save-dialogs)。 JFileChooser有一個屬性來管理這個行爲setFileHidingEnabled,但我找不到類似的javafx,所以可能需要操作系統的行爲。問候 – ELavicount

+2

嗨@elavicount,我已經檢查了JFileChooser選項,你說得對,JavaFX似乎沒有類似的選項。所以我不知道,也許在OS X中不可行,因爲Windows上的過濾器工作得很好。 –

+0

我建議在[open-jfx郵件列表](http://mail.openjdk.java.net/mailman/listinfo/openjfx-dev)上詢問JavaFX開發人員。 – jewelsea

回答

1

查看源代碼後... FileChooser通過本地對話框實現,並且完全不可定製。

所以,不,你不能強制顯示/隱藏隱藏文件的對話框。

FileChooser對話框應該有一個上下文菜單項來顯示/隱藏它們, 但你無法控制從應用

例如這個選項,這裏是它的外觀在Linux上:

FileChooser context menu

0

你試過隱藏所有隱藏文件在Finder -program OS X的機器上?所以:不使用JavaFX,而是使用程序Finder?

+0

我不明白,爲什麼我應該用finder隱藏文件?也許我不明白你的意思。 –

+0

我假設JavaFX啓動Finder的一些實例來爲你選擇一個文件(它使它看起來/感覺與實際的Finder應用程序相同),而不是自己編寫。如果實際情況如此(我不是100%確定的),那麼您對Finder程序的偏好(如隱藏文件)將反映出JavaFX文件選擇器的行爲方式。只是試圖幫助 –

+1

哦,我明白了,但不是,它不會那樣工作。謝謝你。 –

0

我知道這個遊戲已經很晚了,但沒有一個答案能夠真正解釋MacOS的情況。

JavaFX中的打開/保存對話框是本機對話框(實現爲「工作表」)。就像Finder沒有「顯示隱藏文件」選項一樣,這些對話框也不會。有幾種解決方案:

  1. 相對陌生的鍵盤快捷鍵,可自小牛:View Hidden Files in Mac Open and Save Dialog Boxes。 (我只是偶然發現了這個;我一直使用下面的#2。)

  2. 命令行開關端子:

    • 顯示隱藏 - >defaults write com.apple.finder AppleShowAllFiles YES,或
    • 隱藏 - >defaults write com.apple.finder AppleShowAllFiles NO

你的用戶必須充分認識這些替代品;您無法自定義本機打開/保存對話框來提供按鈕來執行此操作。