2012-02-21 15 views
44

Tôi đã gặp một vấn đề nhỏ với JavaFX. Tôi đã cố gắng để thực hiện một filechoosing trong mã của tôi, nơi tôi có thể trỏ vào một FOLDER thay vì một tập tin. Hiện tại tôi không có giải pháp cho nó. Bạn có biết một cách giải quyết khác (ngoại trừ việc sử dụng JFileChooser từ swing)?Trình chỉnh sửa tệp JavaFX

Rất cám ơn cho câu trả lời trước

sửa: Tôi đã có bây giờ là một câu trả lời, cố gắng thử nghiệm nó, nhưng tôi quên đề cập đến các phiên bản của JavaFX. Đây là bản ổn định mới nhất 2.0.3 ở đây, được phát hành cách đây vài ngày (nhưng bản beta không 2.0 và 2.0.1 ban đầu cũng có vấn đề này)

Trả lời

86

Một trình tạo thư mục đã được thêm vào JavaFX như một phần của the 2.1 release. Cách sử dụng:

DirectoryChooser chooser = new DirectoryChooser(); 
chooser.setTitle("JavaFX Projects"); 
File defaultDirectory = new File("c:/dev/javafx"); 
chooser.setInitialDirectory(defaultDirectory); 
File selectedDirectory = chooser.showDialog(primaryStage); 

Các issue tracker đề cập đến một công việc xung quanh cho việc phát hành 2.0GA: "truy cập vào tin phương pháp Oracle API Glass CommonDialogs.showFolderChooser".

+2

"Bạn không thể xem URL này như một vị khách. Bạn phải đăng nhập hoặc đăng ký một tài khoản." – XXL

+2

Nhấp vào liên kết đăng ký trong [JavaFX Jira tracker] (http://javafx-jira.kenai.com/) để đăng ký tài khoản - đó là một hệ thống mở, mọi người đều có thể đăng ký tài khoản. – jewelsea

+1

Chính sách đã thay đổi một vài tháng trước và trình theo dõi JFX JavaFX không còn là một hệ thống mở. Các báo cáo lỗi trong tương lai có thể được gửi tới: http://bugreport.java.com và một số phiên bản của chúng cuối cùng có thể hiển thị để xem trong https://bugs.openjdk.java.net – jewelsea

2

Không giống như trong xoay nơi JFileChooser đã được sử dụng để chọn thư mục và các tập tin cá nhân, trong JavaFX, có FileChooser lớp được sử dụng để chọn những file riêng biệt và lớp DirectoryChooser để lựa chọn thư mục

DirectoryChooser directoryChooser = new DirectoryChooser(); 
    directoryChooser.setTitle("Open Resource File"); 
    directoryChooser.getExtensionFilters().addAll(
    new ExtensionFilter("Text Files", "*.txt"), 
    new ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif"), 
    new ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"), 
    new ExtensionFilter("All Files", "*.*")); 
    File selectedFile = directoryChooser.showDialog(mainStage); 
    if (selectedFile != null) { 
      mainStage.display(selectedFile); 
    } 

là một ví dụ về Trình chọn thư mục.

FileChooser fileChooser = new FileChooser(); 
    fileChooser.setTitle("Open Folder"); 
    fileChooser.showDialog(stage); 

là một ví dụ về file chooser

+0

Điều gì đó thú vị ở đây: có thể bạn có thể cải thiện câu trả lời (nếu không bạn sẽ gây nhầm lẫn cho mọi người). Trong ví dụ của bạn được cho là của một 'DirectoryChooser' bạn không sử dụng một' javafx.stage.DirectoryChooser'. Hơn nữa nó không có phương thức 'showOpenDialog'. –

+1

cảm ơn @mikerodent, tôi đã sửa chữa những sai lầm –

+0

Thực ra tôi đã không phát hiện ra DirectoryChooser ... vì vậy cảm ơn! –