📜  javafx 文件选择器(1)

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

JavaFX 文件选择器

JavaFX 文件选择器是一个图形用户界面组件,用于选择文件或多个文件的路径。该组件可以轻松地集成到JavaFX应用程序中,并且提供了一些定制化选项。

如何使用JavaFX文件选择器?

使用JavaFX文件选择器非常简单。您可以按照下面的步骤完成:

  1. 创建一个 FileChooser 对象:

    FileChooser fileChooser = new FileChooser();
    
  2. 可以设置该文件选择器的标题(title)和初始目录(initialDirectory)。

    fileChooser.setTitle("请选择一个文件");
    fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
    
  3. 可以设置该文件选择器的文件过滤器(extensionFilters),用于过滤文件类型。

    FileChooser.ExtensionFilter extFilter = 
          new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.jpg");
    fileChooser.getExtensionFilters().add(extFilter);
    
  4. 调用 showOpenDialog 方法,以显示文件选择器对话框,并获取所选文件的路径。

    File selectedFile = fileChooser.showOpenDialog(stage);
    if (selectedFile != null) {
        // 处理所选文件
    }
    
代码示例

下面是一个简单的代码示例,演示如何使用JavaFX文件选择器:

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import java.io.File;

public class FileChooserExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("请选择一个文件");
        fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));

        ExtensionFilter extFilter = 
            new ExtensionFilter("JPG files (*.jpg)", "*.jpg");
        fileChooser.getExtensionFilters().add(extFilter);

        File selectedFile = fileChooser.showOpenDialog(primaryStage);
        if (selectedFile != null) {
            System.out.println(selectedFile.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
文件选择器对话框

JavaFX 文件选择器对话框可以自定义标题(title)、初始目录(initialDirectory)和文件过滤器(extensionFilters)。对话框包含两个按钮:打开和取消。

JavaFX文件选择器对话框

文件选择器的可定制选项

除了上述示例中的主要功能外,JavaFX文件选择器还提供了其他定制化选项:

多选文件

可以调用 setMultipleSelectionEnabled 方法,以启用多选文件(默认为单选文件):

FileChooser fileChooser = new FileChooser();
fileChooser.setMultipleSelectionEnabled(true);

在选择文件时,用户可以按住 "Ctrl" 键来选择多个文件。

目录选择

可以调用 setInitialDirectory 方法并传入一个目录的路径,来让文件选择器打开指定目录:

FileChooser fileChooser = new FileChooser();
fileChooser.setInitialDirectory(new File("/path/to/directory"));

如果需要让用户选择目录而不是文件,可以调用 setInitialDirectory 两次,以打开两次文件选择器:

FileChooser directoryChooser = new FileChooser();
directoryChooser.setTitle("请选择目录");
directoryChooser.setInitialDirectory(new File(System.getProperty("user.home")));

FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("请选择一个文件");
fileChooser.setInitialDirectory(directoryChooser.showDialog(stage));

File selectedFile = fileChooser.showOpenDialog(stage);
if (selectedFile != null) {
    // 处理所选文件
}

在上述示例中,首先让用户选择目录,然后使用所选目录的路径来初始化文件选择器。

自定义文件过滤器

您可以使用 FileChooser.ExtensionFilter 对象来定制文件选择器的文件过滤器,例如:

FileChooser fileChooser = new FileChooser();
fileChooser.getExtensionFilters().add(
        new FileChooser.ExtensionFilter("文本文件", "*.txt"));

在上述示例中,文件选择器将只显示 .txt 扩展名的文件。

结论

在JavaFX应用程序中,JavaFX文件选择器是一个基本而重要的组件。通过调用 FileChooser 对象的方法,您可以轻松地调整选项,以实现多选文件、选择目录和自定义文件过滤器等定制化选项。