Javafx 简明教程

JavaFX - Separator

separator 是水平或垂直线,用来划分 JavaFX 应用程序的 UI 元素。请注意,它不会产生任何动作。但是,可以对其进行样式化、应用视觉效果,甚至对其进行动画处理以提供更好的用户体验。在下面的图片中,我们可以看到一个垂直分隔符和一个水平分隔符 −

separator

Separator in JavaFX

在 JavaFX 中,分隔符由名为 Separator 的类表示。此类属于 javafx.scene.control 包。通过实例化此类,可以在 JavaFX 中创建一个分隔符。此类具有以下构造函数 −

  1. Separator() − 它创建一个新的水平分隔符。

  2. Separator(Orientation orientation) − 创建具有指定方向的分隔符。方向可以是垂直或水平的。

Creating a Separator in JavaFX

我们需要按照以下步骤在 JavaFX 中创建分隔符。

Step 1: Create nodes that are going to be separated

因为分隔符用于分隔 JavaFX 中的 UI 节点。因此,需要指定要分隔的 UI 元素。例如,我们使用下面的代码创建按钮 −

// Creating Buttons
Button btn1 = new Button("Button 1");
Button btn2 = new Button("Button 2");
Button btn3 = new Button("Button 3");
Button btn4 = new Button("Button 4");

Step 2: Instantiate the Separator class

在 JavaFX 中,通过实例化名为 Separators 的类来创建分隔符,该类属于 * javafx.scene.control* 包。在 start() 方法中实例化该类,如下所示 −

// creating a separator
Separator sep1 = new Separator();

Step 3: Set the desired Orientation

默认情况下,分隔符是水平的,但是,我们可以使用 setOrientation() 方法并传递方向枚举值 (HORIZONTAL 或 VERTICAL) 作为参数来更改其方向。下面显示的代码将方向设置为垂直 −

sep1.setOrientation(Orientation.VERTICAL);

此外,分隔符占用分配给它的全部水平或垂直空间。因此,有必要使用 setMaxWidth()setMaxHeight 方法根据要求设置其最大宽度或高度。若要指定分配的空间中分隔符线的水平或垂直对齐方式,请使用 setHalignment 或 setValignment 方法并传递 HPos 或 VPos 枚举值作为参数。

Step 4: Launch the Application

创建分隔符后,按照下面给出的步骤正确启动应用程序 −

  1. 首先,通过将 ChoiceBox 对象作为参数值传递给其构造函数,实例化名为 Scene 的类。我们也可以将应用程序屏幕的尺寸作为可选项参数传递给此构造函数。

  2. 然后,使用 Stage 类的 setTitle() 方法设置阶段标题。

  3. 现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。

  4. 使用名为 show() 的方法显示场景的内容。

  5. 最后,借助 launch() 方法启动应用程序。

Example

以下 JavaFX 程序演示如何在 JavaFX 应用程序中创建按钮之间的分隔符。将该代码保存在名为 JavafxSeparator.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Separator;
import javafx.scene.layout.GridPane;
import javafx.geometry.Orientation;
import javafx.stage.Stage;
import javafx.geometry.Pos;
public class JavafxSeparator extends Application {
   @Override
   public void start(Stage stage) {
      // creating grid to contain buttons
      GridPane newgrid = new GridPane();
      // set horizontal and vertical gap
      newgrid.setHgap(10);
      newgrid.setVgap(10);
      newgrid.setAlignment(Pos.CENTER);
      // Creating Buttons
      Button btn1 = new Button("Button 1");
      Button btn2 = new Button("Button 2");
      Button btn3 = new Button("Button 3");
      Button btn4 = new Button("Button 4");
      // adding buttons to the grid
      newgrid.add(btn1, 0, 0);
      newgrid.add(btn2, 2, 0);
      newgrid.add(btn3, 0, 1);
      newgrid.add(btn4, 2, 1);
      // creating a horizontal and a vertical separator
      Separator sep1 = new Separator();
      Separator sep2 = new Separator();
      sep2.setOrientation(Orientation.VERTICAL);
      // Setting background color to the separators
      sep1.setStyle("-fx-background-color: #D2691E;");
      sep2.setStyle("-fx-background-color: #D2691E;");
      // adding separators to the grid
      newgrid.add(sep1, 0, 2, 2, 1);
      newgrid.add(sep2, 1, 0, 1, 2);
      // creating scene and stage
      Scene scene = new Scene(newgrid, 400, 300);
      stage.setTitle("Separator 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 JavafxSeparator.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxSeparator

当我们执行上述代码时,它将生成以下输出。

separator output

Creating a Separator in JavaFX using its parameterized constructor

如前所述,有两种方法可以在 JavaFX 中创建分隔符:一种使用分隔符类的默认构造函数,另一种使用其参数化构造函数。在下一个示例中,我们将使用 Separator 类的参数化构造函数在 JavaFX 中创建分隔符。将此代码保存在名为 VerticalSeparator.java 的文件中。

Example

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Separator;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.geometry.Orientation;
public class VerticalSeparator extends Application {
   @Override
   public void start(Stage stage) {
      // creating three text fields
      TextField textField1 = new TextField();
      TextField textField2 = new TextField();
      TextField textField3 = new TextField();
      // creating vertical separators
      Separator separator1 = new Separator(Orientation.VERTICAL);
      Separator separator2 = new Separator(Orientation.VERTICAL);
      // creating HBox
      HBox hbox = new HBox();
      hbox.setPadding(new Insets(15, 12, 15, 12));
      hbox.setSpacing(10);
      hbox.getChildren().addAll(textField1, separator1, textField2, separator2, textField3);
      // setting the scene and stage
      Scene scene = new Scene(hbox, 500, 300);
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

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

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

在执行上述代码时,它将生成以下输出。

separator output2