FileChooser类 提供了标准平台文件对话框的支持。这些对话框拥有JavaFX的外观效果。
一个FileChooser可以用来调用文件打开的对话框选择单个文件(showOpenDialog)、文件打开对话框中选择多个文件(showOpenMultipleDialog)和文件保存对话框(showSaveDialog)。显示的对话框的配置由的值来控制FileChooser相应的之前设置的showDialog属性方法。此配置包括该对话框的标题,对话框和列出的文件扩展名过滤器(S)中显示的初始目录。对于价值尚未确定明确的配置属性,显示的对话框使用他们的平台默认值。一个对话框显示方法的调用被阻塞,直到用户做出选择或取消对话框。如果对话框被取消,将返回null*.
FileChooserDemo.java:
package top.lss233.demo;
import java.io.File;
import javax.annotation.PostConstruct;
import io.datafx.controller.FXMLController;
import io.datafx.controller.flow.FlowException;
import io.datafx.controller.flow.context.FXMLViewFlowContext;
import io.datafx.controller.flow.context.ViewFlowContext;
import io.datafx.controller.util.VetoException;
import javafx.fxml.FXML; import javafx.stage.FileChooser;
import javafx.stage.Stage;
@FXMLController(value = "/resources/fxml/FileChooserDemo.fxml", title = "FileChooserDemo")
public class FileChooserDemo {
@FXMLViewFlowContext
private ViewFlowContext context;
@FXML
private Button browseFile;
@PostConstruct
public void init() throws FlowException, VetoException {
final Stage stage = (Stage) context.getRegisteredObject("Stage");
browseFile.setOnMouseClickedEvent(()->{
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("打开资源文件");
fileChooser.getExtensionFilters().addAll(
new ExtensionFilter("文本文档", "*.txt"),
new ExtensionFilter("图片文件", "*.png", "*.jpg", "*.gif"),
new ExtensionFilter("音频文件", "*.wav", "*.mp3", "*.aac"),
new ExtensionFilter("所有文件", "*.*"));
File selectedFile = fileChooser.showOpenDialog(stage);
if (selectedFile != null)
stage.display(selectedFile);
});
}
}
FileChooserDemo.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.Label?>
<?import javafx.geometry.Insets?>
<StackPane fx:id="root" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
<VBox>
<HBox >
<Button fx:id="browseFile">
</Button>
</HBox>
</VBox>
</StackPane>
效果图如下: