如何使用 JavaFX 通过具有特定扩展名的 FileChooser 打开照片?

How to open Photos by the FileChooser with a certain extension with JavaFX?

我正在制作照片管理器,我正在搜索以了解如何从 FileChooser 中获取具有某些扩展名的文件:*.png - *.jpg ... 那么我应该使用哪种方法或应该使用哪种代码?

我试过这个:fileChooser.getExtensionFilters(); 但它没有任何作用。

任何人都可以帮助我吗?

FileChooser class has a nested class ExtensionFilter。首先你必须创建它的一个实例:

FileChooser.ExtensionFilter imageFilter
    = new FileChooser.ExtensionFilter("Image Files", "*.jpg", "*.png");

之后您可以将此实例添加到您的 FileChooser 的扩展列表中:

FileChooser fc = new FileChooser();
fc.getExtensionFilters().add(imageFilter);

一个Minimal Complete Verifiable Example代码在下面:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class FileChooserTest extends Application {

  @Override
  public void start(Stage primaryStage) {
    FileChooser.ExtensionFilter imageFilter
        = new FileChooser.ExtensionFilter("Image Files", "*.jpg", "*.png");

    FileChooser fc = new FileChooser();
    fc.getExtensionFilters().add(imageFilter);

    Button btn = new Button();
    btn.setText("Open File");
    btn.setOnAction((ActionEvent event) -> {
      fc.showOpenDialog(primaryStage);
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("FileChooser Demo");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

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