2012-02-21 45 views
44

现在我遇到了JavaFX的一个小问题。我试着在我的代码中做一个文件选择,我可以指向一个FOLDER而不是一个文件。目前我没有解决方案。你知道一个解决方法(除了使用JFileChooser)吗?JavaFX FileChooser

非常感谢你的答案提前

编辑:我已经得到了现在的答案,试图测试,但我忘了提及的JavaFX版本。这是几天前发布的最新的2.0.3稳定版(但最初的非beta 2.0和2.0.1也有此问题)

回答

86

DirectoryChooser作为the 2.1 release的一部分添加到JavaFX。 用法是:

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

issue tracker提到了一个变通的2.0GA版本:“访问私有API的Oracle玻璃方法CommonDialogs.showFolderChooser”。

+2

“你不能查看此URL作为客人,你必须登录或注册一个账号。” – XXL 2012-04-21 13:38:00

+2

单击[JavaFX Jira跟踪器](http://javafx-jira.kenai.com/)中的注册链接注册一个帐户 - 这是一个开放系统,任何人都可以注册一个帐户。 – jewelsea 2012-04-23 21:30:51

+1

策略在几个月前改变了,JavaFX Jira跟踪器不再是一个开放系统。未来的错误报告可能会提交到:http://bugreport.java.com,它们的某些版本可能最终显示在https://bugs.openjdk.java.net中查看 – jewelsea 2015-05-28 21:47:50

2

不像在JFileChooser中被用于选择文件夹和单个文件摆动,在JavaFX中,存在被用于选择单个文件和DirectoryChooser类用于选择目录

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

使用FileChooser类是一个例子目录选择器。

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

是文件选择的一个例子

+0

这里有些有趣的东西:也许你可以改善你的回答(否则你会混淆人)。在你的例子中,假设是一个'DirectoryChooser',你没有使用'javafx.stage.DirectoryChooser'。而且它没有'showOpenDialog'方法。 – 2018-02-15 19:28:07

+1

谢谢@mikerodent,我纠正了错误 – 2018-02-16 20:07:50

+0

其实我没有发现DirectoryChooser ......所以谢谢! – 2018-02-16 20:50:31