如何从JavaFX文件选择器中获取文件路径?

7
我有一个简单的JavaFX窗口,其中包含一个文本字段供用户输入文件路径和一个单独的浏览链接。

JavaFX窗口

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个回答

7

这里有另一个文档。使用showOpenDialog所得到的返回值是一个File对象。

public File showOpenDialog(Window ownerWindow)

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

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


非常感谢您,非常感激,正是我所需要的! - Hans

6

使用showOpenDialogshowSaveDialog(根据您是要打开现有文件还是保存新文件)来选择文件。两者都返回一个File对象。


非常感谢您的帮助。我会注意到 'showSaveDialog' 也可以用。 - Hans
1
@Hans:在这种情况下,showSaveDialog可能不是您想要的,因为它允许用户“创建新文件”(即返回的文件可能不存在)。 - fabian

2
在包含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
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接