0.前言
- FileChooser,文件选择器,用来弹出一个对话框供用户选择一个或多个文件或新增一个文件。
- DirectoryChooser,文件夹选择器。使用上和FileChooser差不多。。。唯一区别在于弹出的文件夹选择对话框只有一种方法:
directoryChooser.showDialog(new Stage())
- JavaFX的UI显示效果是基于操作系统的。。不同操作系统的显示效果不一样。所以FileChooser在其他系统的显示效果也很不一样。
1.弹出文件选择对话框
- 一共有如下3种方法,无论那种方法,都不会在所显示的对话框窗体消失前返回(换言之,直到用户提交或取消选择)。这3种方法的下面代码也不会被执行。
- 3种方法都需要传入一个stage对象,当然,可以马上用
new
创建一个。但是,此时,主stage对象是可以操作的。不太合理,也容易出错。
-
fileChooser.showSaveDialog
:保存文件对话框,允许输入文件名(新增文件)
-
fileChooser.showOpenMultipleDialog()
:打开多个文件,不允许新增,否则会提示文件名无效
-
fileChooser.showOpenDialog()
:打开单一文件,不允许新增,否则会提示文件名无效
//注意如下方法的返回值。程序需要这个返回值来下一步操作文件
public File showSaveDialog(final Window ownerWindow)
public File showOpenDialog(final Window ownerWindow)
public List<File> showOpenMultipleDialog(final Window ownerWindow)
2.设置文件对话框标题
public final void setTitle(final String value);
fileChooser.setTitle("请选择导出的文件");
3.设置初始化目录
fileChooser.setInitialDirectory(
new File(System.getProperty("user.home"))
);
4.设置扩展名过滤器
- 注意,如果是用
showSaveDialog
方法来新增一个文件,返回的文件会自动加上扩展名。比如自动加上.jpg
等。
fileChooser.getExtensionFilters().addAll(
new FileChooser.ExtensionFilter("All Images", "*.*"),
new FileChooser.ExtensionFilter("JPG", "*.jpg"),
new FileChooser.ExtensionFilter("PNG", "*.png")
);
5.FileChooser例子
/**
* 当用户点击导出文档按钮时,调用这个方法
*/
@FXML
private void handleSaveToCSV(){
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("请选择导出的文件");
fileChooser.getExtensionFilters().add(
new FileChooser.ExtensionFilter("CSV","*.csv")
);
File file = fileChooser.showSaveDialog(new Stage());
if (file == null){
return;
}
SaveDocTypeStoreToCSV.saveToCSV(store,file.toString());
}
6.文件夹选择器DirectoryChooser例子
public File showDialog(final Window ownerWindow)
DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.showDialog(new Stage());
参考文章
1.DOC-03-28 文件选择框(File Chooser)