JavaFX - 分隔符



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

Separator

JavaFX 中的分隔符

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

  • Separator() - 它创建一个新的水平分隔符。

  • Separator(Orientation orientation) - 它创建一个具有指定方向的分隔符。方向可以是垂直或水平。

在 JavaFX 中创建分隔符

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

步骤 1:创建将要分隔的节点

由于分隔符用于分隔 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");

步骤 2:实例化 Separator 类

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

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

步骤 3:设置所需的方向

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

sep1.setOrientation(Orientation.VERTICAL); 

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

步骤 4:启动应用程序

创建分隔符后,请按照以下步骤正确启动应用程序 -

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

  • 然后,使用Stage类的setTitle()方法设置舞台的标题。

  • 现在,使用名为Stage的类的setScene()方法将 Scene 对象添加到舞台。

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

  • 最后,在launch()方法的帮助下启动应用程序。

示例

以下 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

使用其参数化构造函数在 JavaFX 中创建分隔符

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

示例

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