如何从JavaFX FileChooser获取文件路径?

时间:2016-02-17 08:05:14

标签: java javafx filechooser

我有一个带有TextField的简单JavaFX窗口,供用户输入文件路径和单独的浏览链接。

JavaFX Window

enter image description here

我想问一下如何从JavaFX FileChooser中提取所选文件的完整文件路径(所以我可以在TextField中设置路径)?

我理解我想要实现的目标只需使用Swing JFileChooser就可以完成:

JFileChooser chooser = new JFileChooser();
String someString = chooser.getSelectedFile().toString();

但是由于我的应用程序是在JavaFX中,我希望它具有一致的外观而不是与Swing的混合。

我查看了文档,似乎没有针对此https://docs.oracle.com/javase/8/javafx/api/javafx/stage/FileChooser.html的方法

提前致谢。

3 个答案:

答案 0 :(得分:4)

使用showOpenDialogshowSaveDialog(取决于您是要打开现有文件还是保存新文件)。两者都返回File个对象。

答案 1 :(得分:3)

这是另一个documentation。使用showOpenDialog获得的回报是File对象。

  

public File showOpenDialog(Window ownerWindow)

     

显示新文件打开对话框。该方法不会返回,直到   显示的打开对话框被驳回。返回值指定   用户选择的文件,如果没有选择则为null。如果   设置文件对话框的所有者窗口,输入到所有窗口中   在显示文件对话框时,对话框的所有者链被阻止。

文件对象有各种方法,如e。 G。 getAbsolutePath

答案 2 :(得分:1)

在具有TextField的控制器类中,您可以创建如下方法:

public void getTheUserFilePath() {

    FileChooser fileChooser = new FileChooser();
    fileChooser.setTitle("Upload File Path");
    fileChooser.getExtensionFilters().addAll(
            new FileChooser.ExtensionFilter("ALL FILES", "*.*"),
            new FileChooser.ExtensionFilter("ZIP", "*.zip"),
            new FileChooser.ExtensionFilter("PDF", "*.pdf"),
            new FileChooser.ExtensionFilter("TEXT", "*.txt"),
            new FileChooser.ExtensionFilter("IMAGE FILES", "*.jpg", "*.png", "*.gif")
    );


    File file = fileChooser.showOpenDialog(dialogPane.getScene().getWindow());

    if (file != null) {
        // pickUpPathField it's your TextField fx:id
        pickUpPathField.setText(file.getPath());

    } else  {
        System.out.println("error"); // or something else
    }

}