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
廣告