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

时间:2015-06-28 02:24:27

标签: javafx filechooser

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

我试过这个:fileChooser.getExtensionFilters();但它什么都没有。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

FileChooser类有一个嵌套类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);
  }
}