FileChooser允许用户导航文件系统并选择一个文件或文件夹。
FileChooser类位于javafx.stage包中。

打开文件

文件选择器可用作打开文件对话框,用于选择单个文件或多个文件,或作为文件保存对话框。以下代码创建一个FileChooser对象并设置其标题,然后显示给用户。

  1. FileChooser fileChooser = new FileChooser();
  2. fileChooser.setTitle("Open Resource File");
  3. fileChooser.showOpenDialog(stage);

可以通过设置initialDirectory和title属性来配置文件选择器对话框窗口。

扩展过滤器

可以设置扩展过滤器来确定在文件选择器中打开哪些文件。

  1. fileChooser.setTitle("View Pictures");
  2. fileChooser.setInitialDirectory(new File(System.getProperty("user.home"))
  3. );
  4. fileChooser.getExtensionFilters().addAll(
  5. new FileChooser.ExtensionFilter("All Images", "*.*"),
  6. new FileChooser.ExtensionFilter("JPG", "*.jpg"),
  7. new FileChooser.ExtensionFilter("GIF", "*.gif"),
  8. new FileChooser.ExtensionFilter("BMP", "*.bmp"),
  9. new FileChooser.ExtensionFilter("PNG", "*.png")
  10. );

保存文件

FileChooser API允许用户为由应用程序保存的文件指定文件名及其文件夹。
showSaveDialog方法打开保存对话框窗口。

  1. FileChooser fileChooser1 = new FileChooser();
  2. fileChooser1.setTitle("Save Image");
  3. System.out.println(pic.getId());
  4. File file = fileChooser1.showSaveDialog(stage);
  5. System.out.println(file);

示例

  1. import java.io.File;
  2. import javafx.application.Application;
  3. import javafx.event.ActionEvent;
  4. import javafx.event.EventHandler;
  5. import javafx.scene.Group;
  6. import javafx.scene.Scene;
  7. import javafx.scene.control.Button;
  8. import javafx.scene.control.ScrollPane;
  9. import javafx.scene.control.TextArea;
  10. import javafx.scene.layout.VBox;
  11. import javafx.stage.FileChooser;
  12. import javafx.stage.Stage;
  13. public class Main extends Application {
  14. public static void main(String[] args) {
  15. launch(args);
  16. }
  17. @Override
  18. public void start(final Stage stage) {
  19. Group root = new Group();
  20. Button buttonLoad = new Button("Load");
  21. buttonLoad.setOnAction(new EventHandler<ActionEvent>(){
  22. @Override
  23. public void handle(ActionEvent arg0) {
  24. FileChooser fileChooser = new FileChooser();
  25. FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
  26. fileChooser.getExtensionFilters().add(extFilter);
  27. File file = fileChooser.showOpenDialog(stage);
  28. System.out.println(file);
  29. }
  30. });
  31. VBox vBox = new VBox();
  32. vBox.getChildren().add(buttonLoad);
  33. root.getChildren().add(vBox);
  34. stage.setScene(new Scene(root, 500, 400));
  35. stage.show();
  36. }
  37. }

Video_2022-04-28_161022.wmv (996.83KB)