104 lines
1.8 KiB
Java
104 lines
1.8 KiB
Java
package com.imyeyu.fx.utils;
|
|
|
|
import javafx.stage.FileChooser;
|
|
import javafx.stage.Window;
|
|
|
|
import java.io.File;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
|
|
/**
|
|
* 文件选择器
|
|
*
|
|
* @author 夜雨
|
|
* @version 2022-04-14 19:38
|
|
*/
|
|
public class FileSelector {
|
|
|
|
/** 选择器 */
|
|
private final FileChooser chooser;
|
|
|
|
/** 默认构造器 */
|
|
public FileSelector() {
|
|
this("./");
|
|
}
|
|
|
|
/**
|
|
* 构造文件选择器
|
|
*
|
|
* @param path 默认路径
|
|
*/
|
|
public FileSelector(String path) {
|
|
chooser = new FileChooser();
|
|
|
|
File dir = new File(Objects.requireNonNullElse(path, ""));
|
|
if (dir.exists()) {
|
|
if (dir.isFile()) {
|
|
chooser.setInitialDirectory(dir.getParentFile());
|
|
} else {
|
|
chooser.setInitialDirectory(dir);
|
|
}
|
|
} else {
|
|
chooser.setInitialDirectory(new File("./"));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 设置标题
|
|
*
|
|
* @param title 标题
|
|
*/
|
|
public void setTitle(String title) {
|
|
chooser.setTitle(title);
|
|
}
|
|
|
|
/**
|
|
* 添加格式限制
|
|
*
|
|
* @param description 说明
|
|
* @param format 格式
|
|
*/
|
|
public void addFilter(String description, String... format) {
|
|
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter(description, format));
|
|
}
|
|
|
|
/**
|
|
* 单选文件
|
|
*
|
|
* @param window 依赖窗体
|
|
* @return 选择的文件
|
|
*/
|
|
public File single(Window window) {
|
|
return chooser.showOpenDialog(window);
|
|
}
|
|
|
|
/**
|
|
* 多选文件
|
|
*
|
|
* @param window 依赖窗体
|
|
* @return 选择的文件
|
|
*/
|
|
public List<File> multi(Window window) {
|
|
return chooser.showOpenMultipleDialog(window);
|
|
}
|
|
|
|
/**
|
|
* 保存文件
|
|
*
|
|
* @param window 依赖窗体
|
|
* @return 选择的文件夹
|
|
*/
|
|
public File save(Window window) {
|
|
return chooser.showSaveDialog(window);
|
|
}
|
|
|
|
/**
|
|
* 获取选择器
|
|
*
|
|
* @return 选择器
|
|
*/
|
|
public FileChooser getChooser() {
|
|
return chooser;
|
|
}
|
|
}
|