JavaFX - 分割窗格



分割窗格是一種包含兩個或多個由分隔線分隔的滑塊的控制元件。每個滑塊提供不同的視口,允許我們嵌入多個元件。我們還可以將分割窗格的方向設定為水平或垂直。讓我們看看一個典型的分割窗格是什麼樣子的 -

JavaFX SplitPane

JavaFX 中的分割窗格

在 JavaFX 中,名為 SplitPane 的類表示分割窗格。要使用分割窗格的功能,我們需要建立一個 SplitPane 類的例項,並將我們想要在其中顯示的元件新增到其中。這些元件可以是任何 JavaFX 節點,例如標籤、按鈕、影像、文字欄位等等。我們可以使用以下任何建構函式來建立一個分割窗格 -

  • SplitPane() - 它是用於建立沒有任何預定義節點的分割窗格的預設建構函式。

  • SplitPane(Node components) - 它是 SplitPane 類的引數化建構函式,它將建立一個帶有指定節點的新分割窗格。

在 JavaFX 中建立分割窗格的步驟

要在 JavaFX 中建立分割窗格,請按照以下步驟操作。

步驟 1:建立兩個或多個節點

如前所述,分割窗格至少包含兩個滑塊。因此,我們的第一步將是建立兩個或多個節點以在這些不同的滑塊中顯示。為了本例的需要,我們將使用標籤。在 JavaFX 中,標籤是透過例項化名為 Label 的類建立的,該類屬於 javafx.scene.control 包。如下所示建立標籤 -

// Creating four labels
Label labelOne = new Label("Label 1");
Label labelTwo = new Label("Label 2");
Label labelThree = new Label("Label 3");
Label labelFour = new Label("Label 4");

同樣,透過例項化其各自的類來建立所需的節點。

步驟 2:例項化 SplitPane 類

例項化 javafx.scene.control 包的 SplitPane 類,不向其建構函式傳遞任何引數值,並使用 getItems() 方法將所有標籤新增到分割窗格中。

// instantiating the SplitPane class
SplitPane splitP = new SplitPane();
// adding the labels to the SplitPane
splitP.getItems().addAll(labelOne, labelTwo, labelThree, labelFour);

步驟 3:啟動應用程式

建立 SplitPane 並向其新增標籤後,請按照以下步驟正確啟動應用程式 -

  • 首先,透過將 SplitPane 物件作為引數值傳遞給其建構函式來例項化名為 Scene 的類。此外,將應用程式螢幕的尺寸作為可選引數傳遞給此建構函式。

  • 然後,使用 Stage 類的 setTitle() 方法為舞臺設定標題。

  • 現在,使用名為 Stage 的類的 setScene() 方法將 Scene 物件新增到舞臺中。

  • 使用名為 show() 的方法顯示場景的內容。

  • 最後,應用程式在 launch() 方法的幫助下啟動。

示例

以下是將在 JavaFX 中建立一個分割窗格的程式。將此程式碼儲存在名為 NewSplitpane.java 的檔案中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.stage.Stage;
public class NewSplitpane extends Application {
   @Override
   public void start(Stage stage) {
      // Creating four labels
      Label labelOne = new Label("Label 1");
      Label labelTwo = new Label("Label 2");
      Label labelThree = new Label("Label 3");
      Label labelFour = new Label("Label 4");
      // instantiating the SplitPane class
      SplitPane splitP = new SplitPane();
      // adding the labels to the SplitPane
      splitP.getItems().addAll(labelOne, labelTwo, labelThree, labelFour);
      // Creating a Scene with the SplitPane as its root node
      Scene scene = new Scene(splitP, 400, 300);
      // to set the title
      stage.setTitle("SplitPane in JavaFX");
      // Setting the Scene of the Stage
      stage.setScene(scene);
      // Display the Stage
      stage.show();
   }
      public static void main(String[] args) {
      launch(args);
   }
}

使用命令提示符透過以下命令編譯並執行上述 Java 檔案。

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

輸出

執行後,上述程式將生成一個 JavaFX 視窗,其中顯示一個帶有四個標籤和三個分隔線的 SplitPane,如下所示。

SplitPane Output

設定 SplitPane 的方向

預設情況下,SplitPane 具有水平方向,這意味著元件從左到右彼此相鄰放置。我們可以透過呼叫 SplitPane 類的 setOrientation() 方法並將 Orientation.VERTICAL 引數傳遞給它來將方向更改為垂直方向。

示例

在以下 JavaFX 程式中,我們將建立一個垂直 SplitPane。將此程式碼儲存在名為 SplitpaneDemo.java 的檔案中。

import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.stage.Stage;
import javafx.scene.layout.VBox;
public class SplitpaneDemo extends Application {
   @Override
   public void start(Stage stage) {
      // Create a SplitPane with vertical orientation
      SplitPane splitP = new SplitPane();
      splitP.setOrientation(Orientation.VERTICAL);
      // vertical box to hold the labels
      VBox box1 = new VBox();
      VBox box2 = new VBox();
      // Create two labels and add them to the SplitPane
      box1.getChildren().add(new Label("This is \nthe \nfirst section"));
      box2.getChildren().add(new Label("This is \nthe \nsecond section"));
      splitP.getItems().addAll(box1, box2);
      // Set the divider position to 50
      splitP.setDividerPositions(0.5);
      // Create a scene and show the stage
      Scene scene = new Scene(splitP, 400, 300);
      stage.setTitle("SplitPane in JavaFX");
      stage.setScene(scene);
      stage.show();
   }
      public static void main(String[] args) {
      launch(args);
   }
}

使用以下命令從命令提示符編譯並執行儲存的 Java 檔案。

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

輸出

當我們執行上述程式碼時,它將生成以下輸出。

Splitpane Output2
廣告