📜  JavaFX | DirectoryChooser 类(1)

📅  最后修改于: 2023-12-03 15:31:35.819000             🧑  作者: Mango

JavaFX | DirectoryChooser 类

JavaFX 中的 DirectoryChooser 类用于展示一个对话框,让用户选择文件夹。该类继承自 FileChooser 类,因此具备 FileChooser 类所有的功能。

创建 DirectoryChooser 对象

首先,需要创建一个 DirectoryChooser 对象:

DirectoryChooser directoryChooser = new DirectoryChooser();

在创建对象时可以传入一个标题字符串,该字符串将显示在对话框的标题栏上:

DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.setTitle("Choose Directory");
显示对话框

接下来,需要显示对话框,让用户选择文件夹。可以通过调用 DirectoryChooser 的 showDialog() 方法来显示对话框:

File selectedDirectory = directoryChooser.showDialog(stage);

其中,stage 参数为该对话框所属的舞台(Stage)对象。该方法返回选择的文件夹对象(实际上是一个 File 对象)。

更多配置

除了上述基础的功能外,DirectoryChooser 还支持更多的配置选项。比如,可以设置默认的文件夹、可选择的文件夹和文件类型过滤器。

设置默认文件夹

可以通过 setInitialDirectory() 方法来设置默认的文件夹。该方法需要传入一个 File 对象,表示默认的文件夹路径:

DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.setInitialDirectory(new File("/path/to/folder"));
设置可选择的文件夹

可以通过 setInitialDirectory() 方法来设置默认的文件夹。该方法需要传入一个 File 对象,表示默认的文件夹路径:

DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.setInitialDirectory(new File("/path/to/folder"));
设置文件类型过滤器

除了选择文件夹外,DirectoryChooser 还可以选择文件。可以通过 getExtensionFilters() 方法获取一个文件类型过滤器列表,然后添加或删除过滤器。

DirectoryChooser directoryChooser = new DirectoryChooser();

// 添加过滤器
FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("Image Files", "*.jpg", "*.png");
directoryChooser.getExtensionFilters().add(filter);

// 删除过滤器
directoryChooser.getExtensionFilters().clear();
示例

以下是一个完整的示例代码,演示了如何使用 DirectoryChooser 类选择文件夹:

import java.io.File;

import javafx.application.Application;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;

public class DirectoryChooserExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Directory Chooser Example");

        DirectoryChooser directoryChooser = new DirectoryChooser();
        directoryChooser.setTitle("Choose Directory");
        directoryChooser.setInitialDirectory(new File(System.getProperty("user.home")));

        File selectedDirectory = directoryChooser.showDialog(primaryStage);

        if (selectedDirectory != null) {
            System.out.println("Selected Directory: " + selectedDirectory.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
        launch(args);
    }

}
结语

DirectoryChooser 类能够方便地让用户选择文件夹,并且支持多种配置选项,可以满足大多数文件选择器的需求。