2014-04-11 14 views
12

Tôi đang phát triển một ứng dụng Java bằng cách sử dụng JavaFX cho giao diện người dùng của nó.Vô hiệu hoá các tệp ẩn bằng FileChooser từ JavaFX

Khi tôi sử dụng lớp FileChooser để tải tệp CSV từ ổ cứng máy tính trong Os X Mavericks, hộp thoại hiển thị cho tôi tất cả các tệp và thư mục, thậm chí cả tệp và thư mục tạo ra nhiều tiếng ồn và thực sự khó tìm tệp mong muốn.

ảnh chụp màn hình này minh họa những gì tôi đang nói về:

enter image description here

Tôi nghĩ rằng đây có thể là nhiều hơn một vấn đề OS X, nhưng tôi không hiểu làm thế nào để sửa chữa, ít nhất là tôi không hiểu cách tôi có thể sửa nó với lớp JavaChoiceChooser.

Dưới đây là mã của tôi:

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

Cập nhật

Đây là phương thức Google Chrome để mở tập tin.

enter image description here

+2

Xin chào Dave, tôi nghĩ vấn đề là hệ điều hành liên quan. Bạn đã cố mở hộp thoại từ một ứng dụng khác chưa. Ngoài ra, bạn có thể thử [this] (http://apple.stackexchange.com/questions/99213/is-it-possible-to-always-show-hidden-dotfiles-in-open-save-dialogs). JFileChooser có một thuộc tính để quản lý hành vi này setFileHidingEnabled nhưng tôi không thể tìm thấy một cái gì đó tương tự cho javafx, vì vậy có lẽ nó có hành vi hệ điều hành. Kính trọng – ELavicount

+2

Xin chào @elavicount, tôi đã kiểm tra tùy chọn JFileChooser và bạn nói đúng, JavaFX dường như không có tùy chọn tương tự. Vì vậy, tôi không biết, có lẽ không phải là posible trong OS X vì bộ lọc hoạt động khá tốt trên Windows. –

+0

Tôi khuyên bạn nên hỏi các nhà phát triển JavaFX trên [danh sách gửi thư mở jfx] (http://mail.openjdk.java.net/mailman/listinfo/openjfx-dev) về việc này. – jewelsea

Trả lời

1

Sau khi xem xét nguồn ... FileChooser được thực hiện trên các hộp thoại tự nhiên và hoàn toàn không thể tùy chỉnh.

Vì vậy, không, bạn không thể buộc hộp thoại hiển thị/ẩn các tệp ẩn.

Bên FileChooser thoại nên có một mục trình đơn ngữ cảnh để hiển thị/ẩn chúng, nhưng bạn không thể kiểm soát tùy chọn này từ ứng dụng

Ví dụ, đây là cách nó trông giống trên Linux:

FileChooser context menu

0

Bạn đã cố gắng che giấu tất cả các file ẩn trong Finder -Chương trình trên máy OS X? Vì vậy: không sử dụng JavaFX, nhưng bằng cách sử dụng chương trình Finder?

+0

Tôi không hiểu, tại sao tôi nên ẩn các tệp bằng công cụ tìm? Có lẽ tôi không hiểu ý bạn là gì. –

+0

Tôi giả định JavaFX sẽ khởi chạy một số phiên bản của Trình tìm kiếm để bạn chọn một tệp (làm cho nó trông giống như ứng dụng Finder thực tế), thay vì viết riêng của chúng. Nếu đây thực sự là trường hợp (tôi không chắc chắn 100%), thì tùy chọn của bạn về chương trình Trình tìm kiếm (chẳng hạn như ẩn tệp) sẽ phản ánh cách trình chọn tệp JavaFX hoạt động. Chỉ cần cố gắng giúp đỡ –

+1

Tôi hiểu rồi, nhưng không, nó không hoạt động theo cách đó. Cảm ơn bạn tho. –

0

Tôi biết điều này là muộn cho trò chơi nhưng không có câu trả lời nào thực sự giải thích tình huống cho MacOS.

Hộp thoại mở/lưu trong JavaFX là hộp thoại gốc (được triển khai dưới dạng "trang tính"). Cũng giống như Finder không có tùy chọn "hiển thị các tệp ẩn", các hộp thoại này cũng không có. Có một số giải pháp:

  1. Phím tắt tương đối không xác định, có sẵn từ Mavericks: View Hidden Files in Mac Open and Save Dialog Boxes. (Tôi chỉ vấp phải điều này, tôi đã luôn luôn sử dụng # 2 bên dưới.)

  2. dòng lệnh switch trong Terminal:

    • chương trình ẩn ->defaults write com.apple.finder AppleShowAllFiles YES, hoặc
    • hide ->defaults write com.apple.finder AppleShowAllFiles NO

sử dụng của bạn phải có đủ nhận thức các lựa chọn thay thế này; bạn không thể tùy chỉnh hộp thoại mở/lưu gốc để cung cấp nút để thực hiện việc này.

Các vấn đề liên quan