Javafx 简明教程

JavaFX - Button Bar

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

button bar sample

ButtonBar in JavaFX

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

这个类提供了两个构造器,如下所示 −

  1. ButtonBar() − 它用于创建带有将特定于操作系统默认属性的按钮栏。

  2. ButtonBar(String buttonOrder) − 它将创建带有指定按钮顺序的按钮栏。

Steps to create a Button Bar in JavaFX

要在 JavaFX 中创建按钮栏,请执行以下步骤。

Step 1: Create two or more Buttons

在 JavaFX 中,通过实例化名为 Button 的类(该类属于包 javafx.scene.control )来创建按钮。像下面那样实例化此类 −

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

同样,为项目创建所需数量的按钮。

Step 2: Instantiate ButtonBar class

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

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

Step 3: Launching Application

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

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

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

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

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

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

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

Example

以下是将在 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

Creating a ButtonBar with customized Button orders

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

Example

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

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

button bar output2