JavaFX - 文件选择器



文件选择器是一个图形用户界面元素,允许用户浏览文件系统。通常,它用于打开和保存单个或多个文件。在下图中,我们可以看到 Google Drive 应用程序中的文件选择器:

Filechooser

JavaFX 中的文件选择器

在 JavaFX 中,文件选择器由名为FileChooser的类表示,该类属于名为javafx.scene.control的包。我们可以通过实例化此类在我们的 JavaFX 应用程序中创建一个文件选择器组件。此类只有一个构造函数,即其默认构造函数。但是,它提供了多个属性,如下所示:

  • initialDirectory - 此属性指定文件选择器的初始目录。您可以使用setInitialDirectory()方法为其设置值。

  • selectedExtensionFilter - 此属性指定对话框中显示的扩展名过滤器。您可以使用setSelectedExtensionFilter()方法为其设置值。

  • Title - 此属性指定对话框的标题。可以使用setTitle()方法为其设置值。

如何在 JavaFX 中创建文件选择器?

请按照以下步骤在 JavaFX 中创建文件选择器。

步骤 1:创建与 FileChooser 关联的节点

文件选择器必须与另一个节点(如菜单或按钮)关联,以便在单击该节点时打开一个对话框窗口以进行文件选择。为此,我们使用了 Menu,如下面的代码所示:

//Creating a menu
Menu fileMenu = new Menu("File");
//Creating menu Items
MenuItem item = new MenuItem("Open Image");

步骤 2:实例化 FileChooser 类

要创建文件选择器,请实例化 FileChooser 类。然后,使用getExtensionFilters()方法设置所需的文件扩展名,如下面的代码块所示:

//Creating a File chooser
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Open Image");
fileChooser.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*.*"));

步骤 3:向 Menu 添加操作处理程序

为菜单设置操作非常重要,因为它将触发文件选择器对话框的打开。

//Adding action on the menu item
item.setOnAction(new EventHandler<ActionEvent>() {
   public void handle(ActionEvent event) {
      //Opening a dialog box
      fileChooser.showOpenDialog(stage);
   }});

步骤 4:启动应用程序

创建文件选择器并设置其属性后,创建一个MenuBar。接下来,将Menubar对象传递给Group类的构造函数。然后,设置SceneStage。最后,使用launch()方法启动应用程序。

示例

以下是使用 JavaFX 创建 FileChooser 的程序。将此代码保存在名为JavafxFilechooser.java的文件中。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.paint.Color;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javafx.stage.FileChooser.ExtensionFilter;
public class JavafxFilechooser extends Application {
   public void start(Stage stage) {
      //Creating a menu
      Menu fileMenu = new Menu("File");
      //Creating menu Items
      MenuItem item = new MenuItem("Open Image");
      fileMenu.getItems().addAll(item);
      //Creating a File chooser
      FileChooser fileChooser = new FileChooser();
      fileChooser.setTitle("Open Image");
      fileChooser.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*.*"));
      //Adding action on the menu item
      item.setOnAction(new EventHandler<ActionEvent>() {
         public void handle(ActionEvent event) {
            //Opening a dialog box
            fileChooser.showOpenDialog(stage);
      }});
      //Creating a menu bar and adding menu to it.
      MenuBar menuBar = new MenuBar(fileMenu);
      menuBar.setTranslateX(3);
      menuBar.setTranslateY(3);
      //Setting the stage
      Group root = new Group(menuBar);
      Scene scene = new Scene(root, 400, 300, Color.BEIGE);
      stage.setTitle("File Chooser Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令从命令提示符编译并执行保存的 Java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxFilechooser.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxFilechooser

输出

执行后,上述程序将显示一个按钮。当我们单击该按钮时,它将显示一个弹出窗口,允许用户选择一个文件。

Filechooser Output
广告