我有一个带有TextField的简单JavaFX窗口,供用户输入文件路径和单独的浏览链接。
我想问一下如何从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的方法
提前致谢。
答案 0 :(得分:4)
使用showOpenDialog
或showSaveDialog
(取决于您是要打开现有文件还是保存新文件)。两者都返回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
}
}