JavaFX - 按钮栏



ButtonBar 是一种容器,用于以水平布局排列按钮。这些按钮的排列或位置取决于我们正在使用的操作系统类型。通常,放置在 ButtonBar 内的所有按钮都具有统一的大小。但是,它也允许我们自定义按钮的大小以及位置。一个典型的按钮栏如下所示。它包含两个按钮,分别为“是”和“否”。

Button Bar

JavaFX 中的 ButtonBar

在 JavaFX 中,名为ButtonBar的类表示一个按钮栏。此类属于包javafx.scene.control。我们可以通过实例化 ButtonBar 类在 JavaFX 中创建按钮栏节点。

此类有两个可用的构造函数,它们如下所示:

  • ButtonBar() - 用于创建具有默认属性的按钮栏,这些属性将特定于操作系统。

  • ButtonBar(String buttonOrder) - 将根据指定的按钮顺序创建按钮栏。

在 JavaFX 中创建按钮栏的步骤

要在 JavaFX 中创建按钮栏,请按照以下步骤操作。

步骤 1:创建两个或多个按钮

在 JavaFX 中,按钮是通过实例化名为Button的类创建的,该类属于包javafx.scene.control。如下所示实例化此类:

//Creating required buttons
Button buttonOne = new Button("Back");
Button buttonTwo = new Button("Accept");
Button buttonThree = new Button("Cancel");

类似地,为项目创建所需的按钮数量。

步骤 2:实例化 ButtonBar 类

实例化包javafx.scene.controlButtonBar类,不要向其构造函数传递任何参数值,并使用getButtons()方法添加所有按钮。

//Creating a ButtonBar
ButtonBar newButtonbar = new ButtonBar();
// Adding buttons to the ButtonBar
newButtonbar.getButtons().addAll(buttonOne, buttonTwo, buttonThree); 

步骤 3:启动应用程序

创建按钮栏后,请按照以下步骤正确启动应用程序:

  • 首先,实例化名为HBox的类,并使用getChildren()方法添加按钮栏。

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

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

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

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

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

示例

以下是将在 JavaFX 中创建按钮栏的程序。将此代码保存在名为JavafxButtonBar.java的文件中。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class JavafxButtonBar extends Application {
   @Override
   public void start(Stage stage) {
      //Creating required buttons
      Button buttonOne = new Button("Back");
      Button buttonTwo = new Button("Accept");
      Button buttonThree = new Button("Cancel");
      //Creating a ButtonBar
      ButtonBar newButtonbar = new ButtonBar();
      // Adding buttons to the ButtonBar
      newButtonbar.getButtons().addAll(buttonOne, buttonTwo, buttonThree);
      newButtonbar.setPadding(new Insets(10));
      HBox box = new HBox();
      box.getChildren().addAll(newButtonbar);
      //Setting the stage
      Scene scene = new Scene(box, 500, 250);
      stage.setTitle("ButtonBar 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 JavafxButtonBar.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxButtonBar

输出

执行后,上述程序将生成一个 JavaFX 窗口,其中显示如下所示的 ButtonBar。

ButtonBar Output

创建具有自定义按钮顺序的 ButtonBar

在大多数情况下,按钮的顺序由操作系统确定。但是,如果需要自定义布局,则可以使用ButtonBar类的setButtonOrder()方法。它将按钮顺序属性作为参数并相应地排列按钮。不同操作系统的按钮顺序属性为 BUTTON_ORDER_WINDOWS、BUTTON_ORDER_MAC_OS 和 BUTTON_ORDER_LINUX。

示例

在下面的 JavaFX 程序中,我们将通过设置 MAC 的按钮顺序属性来创建 ButtonBar。将此代码保存在名为JavafxButtonBar.java的文件中。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class JavafxButtonBar extends Application {
   @Override
   public void start(Stage stage) {
      //Creating required buttons
      Button buttonTwo = new Button("Yes");
      Button buttonOne = new Button("No");
      //Creating a ButtonBar
      ButtonBar newButtonbar = new ButtonBar();
      // Setting the order of Buttons
      newButtonbar.setButtonOrder("BUTTON_ORDER_MAC_OS");
      // Adding buttons to the ButtonBar
      newButtonbar.getButtons().addAll(buttonOne, buttonTwo);
      newButtonbar.setPadding(new Insets(10));
      HBox box = new HBox();
      box.getChildren().addAll(newButtonbar);
      //Setting the stage
      Scene scene = new Scene(box, 500, 250);
      stage.setTitle("ButtonBar 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 JavafxButtonBar.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxButtonBar

输出

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

ButtonBar Output2
广告