2014-04-11 9 views
12

Zajmuję się tworzeniem aplikacji Java za pomocą JavaFX dla jego interfejsu użytkownika.Wyłączanie ukrytych plików przy użyciu FileChooser z JavaFX

Kiedy używam klasy FileChooser do ładowania pliku CSV z dysku twardego komputera w Os X Mavericks, okno dialogowe pokazuje mi wszystkie pliki i foldery, nawet te ukryte, które generują dużo hałasu i bardzo utrudniają znalezienie żądany plik.

Ten zrzut ekranu pokazuje, co mówię:

enter image description here

myślę, że to może być bardziej OS X problem, ale nie rozumiem, jak to naprawić, przynajmniej ja nie rozumiem, jak mogę to naprawić za pomocą klasy JavaFX FileChooser.

Oto mój kod:

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

Aktualizacja

To jest modalne Google Chrome do otwierania plików.

enter image description here

+2

Cześć Dave, myślę, że problem jest związany z systemem operacyjnym. Czy próbowałeś otworzyć okno dialogowe z innej aplikacji? Możesz także spróbować [this] (http://apple.stackexchange.com/questions/99213/is-it-possible-to-always-show-hidden-dotfiles-in-open-save-dialogs). JFileChooser ma właściwość do zarządzania tym zachowaniem setFileHidingEnabled, ale nie mogę znaleźć czegoś podobnego dla javafx, więc prawdopodobnie zachowuje OS. Pozdrawiam – ELavicount

+2

Witam @elavicount, już sprawdziłem opcję JFileChooser i masz rację, JavaFX wydaje się nie mieć podobnej opcji. Więc nie wiem, może nie jest możliwe w systemie OS X, ponieważ filtr działa całkiem dobrze w systemie Windows. –

+0

Radzę zwrócić się do programistów JavaFX z listy dyskusyjnej [open-jfx] (http://mail.openjdk.java.net/mailman/listinfo/openjfx-dev) na ten temat. – jewelsea

Odpowiedz

1

Po obejrzeniu źródeł ... FileChooser jest zaimplementowany w macierzystych oknach dialogowych i całkowicie nie można go dostosowywać.

Tak, nie, nie można wymusić dialogu, aby pokazać/ukryć ukryte pliki.

Wewnątrz FileChooser dialogowe nie powinno stanowić element menu kontekstowego, aby pokazać/ukryć je, ale nie można kontrolować tę opcję z aplikacji

Na przykład, oto jak to wygląda na Linuksie:

FileChooser context menu

0

Czy próbowałeś ukrywa wszystkie ukryte pliki w Finder -program na maszynie OS X? A więc: nie używając JavaFX, ale używając programu Finder?

+0

Nie rozumiem, dlaczego mam ukrywać pliki za pomocą wyszukiwarki? Może nie rozumiem, co masz na myśli. –

+0

Zakładam, że JavaFX uruchamia niektóre instancje Findera, aby wybrać plik (co sprawia, że ​​wygląda/czuje się tak samo jak aplikacja Finder), zamiast pisać własne. Jeśli tak jest w rzeczywistości (nie jestem w 100% pewny), to preferencje programu Finder (takie jak ukrywanie plików) będą odzwierciedlać sposób, w jaki zachowuje się selektor plików JavaFX. Po prostu próbuję pomóc –

+1

Och, rozumiem, ale nie, to nie działa w ten sposób. Dziękuję. –

0

Wiem, że jest późno, ale żadna z odpowiedzi nie wyjaśnia sytuacji MacOS.

Okno dialogowe otwierania/zapisywania w JavaFX to rodzime okno dialogowe (realizowane jako "arkusze"). Podobnie jak Finder nie ma opcji "Pokaż ukryte pliki", te okna dialogowe również nie. Istnieje kilka rozwiązań:

  1. stosunkowo mało znane skróty klawiaturowe, dostępny od Mavericks: View Hidden Files in Mac Open and Save Dialog Boxes. (Po prostu natknąłem się na to, zawsze użyłem # 2 poniżej.)

  2. przełącznik linii poleceń w Terminalu:

    • pokaż ukryte ->defaults write com.apple.finder AppleShowAllFiles YES lub
    • hide ->defaults write com.apple.finder AppleShowAllFiles NO

Twój użytkownik musi być wystarczająco świadomy te alternatywy; nie można dostosować natywnego okna dialogowego Otwórz/Zapisz, aby udostępnić przycisk do wykonania tej czynności.

Powiązane problemy