Javafx 简明教程
JavaFX - Button Bar
ButtonBar 是用水平布局排列按钮的容器类型。这些按钮的排列或位置取决于我们正在使用的操作系统。通常,放置在 ButtonBar 中的所有按钮都统一大小。然而,它还允许我们自定义按钮的大小和位置。一个典型的按钮栏如图所示。它包含两个按钮,分别为“是”和“否”。
ButtonBar in JavaFX
在 JavaFX 中,名为 ButtonBar 的类表示一个按钮栏。此类属于包 javafx.scene.control 。我们可以通过实例化 ButtonBar 类在 JavaFX 中创建按钮栏节点。
这个类提供了两个构造器,如下所示 −
-
ButtonBar() − 它用于创建带有将特定于操作系统默认属性的按钮栏。
-
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.control 的 ButtonBar 类,不清向其构造器传递任何参数值,并使用 getButtons() 方法添加所有按钮。
//Creating a ButtonBar
ButtonBar newButtonbar = new ButtonBar();
// Adding buttons to the ButtonBar
newButtonbar.getButtons().addAll(buttonOne, buttonTwo, buttonThree);
Step 3: Launching Application
创建按钮栏后,按照以下步骤来正确启动应用程序 −
-
首先,实例化名为 HBox 的类并使用 getChildren() 方法添加按钮栏。
-
然后,通过将 HBox 对象作为参数值传递给其构造函数来实例化名为 Scene 的类。我们还可以将应用程序屏幕的尺寸作为可选参数传递给此构造函数。
-
然后,使用 Stage 类的 setTitle() 方法设置阶段标题。
-
现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。
-
使用名为 show() 的方法显示场景的内容。
-
最后,借助 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。
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
当我们执行上述代码时,它将生成以下输出。