hbox java_HBox_学习JavaFx|WIKI教程

HBox

如果我们在应用程序的布局中使用HBox,则所有节点都设置在一个水平行中。

包javafx.scene.layout名为HBox的类表示HBox窗格。 该类包含五个属性,即 -alignment - 此属性表示HBox边界中节点的对齐方式。 您可以使用setter方法setAlignment()为此属性设置值。

fillHeight - 此属性为布尔类型,在将此属性设置为true时,HBox中可调整大小的节点的大小将调整为HBox的高度。 您可以使用setter方法setFillHeight()为此属性设置值。

spacing - 此属性是double类型,它表示HBox的子节点之间的空间。 您可以使用setter方法setSpacing()为此属性设置值。

除此之外,这个类还提供了几种方法,它们是 -setHgrow() - 设置HBox包含的子级的水平增长优先级。 此方法接受节点和优先级值。

setMargin() - 使用此方法,您可以将边距设置为HBox。 此方法接受Insets类的节点和对象(矩形区域的4侧的一组内部偏移)。

例子 (Example)

以下程序是HBox布局的示例。 在这里,我们插入一个文本字段和两个按钮,播放和停止。 这是以10的间距完成的,每个边距都有尺寸 - (10,10,10,10)。

将此代码保存在名为HBoxExample.java的文件中。import javafx.application.Application;

import javafx.collections.ObservableList;

import javafx.geometry.Insets;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.TextField;

import javafx.stage.Stage;

import javafx.scene.layout.HBox;

public class HBoxExample extends Application {

@Override

public void start(Stage stage) {

//creating a text field

TextField textField = new TextField();

//Creating the play button

Button playButton = new Button("Play");

//Creating the stop button

Button stopButton = new Button("stop");

//Instantiating the HBox class

HBox hbox = new HBox();

//Setting the space between the nodes of a HBox pane

hbox.setSpacing(10);

//Setting the margin to the nodes

hbox.setMargin(textField, new Insets(20, 20, 20, 20));

hbox.setMargin(playButton, new Insets(20, 20, 20, 20));

hbox.setMargin(stopButton, new Insets(20, 20, 20, 20));

//retrieving the observable list of the HBox

ObservableList list = hbox.getChildren();

//Adding all the nodes to the observable list (HBox)

list.addAll(textField, playButton, stopButton);

//Creating a scene object

Scene scene = new Scene(hbox);

//Setting title to the Stage

stage.setTitle("Hbox Example");

//Adding scene to the stage

stage.setScene(scene);

//Displaying the contents of the stage

stage.show();

}

public static void main(String args[]){

launch(args);

}

}

使用以下命令从命令提示符编译并执行保存的java文件。javac HBoxExample.java

java HBoxExample.java

执行时,上面的程序生成一个JavaFX窗口,如下所示。

0c1eb27068d7f43ed2cab7c0b3724cf8.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaFX 是一个用于构建富客户端应用程序的图形用户界面 (GUI) 框架。本教程将带您快速了解 JavaFX 的基础知识,以便开始构建自己的应用程序。 1. 安装 JavaFX 首先,您需要安装 JavaFX。如果您已经安装了 Java SE 11 或更高版本,则无需额外的安装。否则,您需要下载并安装 JavaFX SDK。下载链接:https://gluonhq.com/products/javafx/ 2. 创建 JavaFX 应用程序 创建 JavaFX 应用程序的步骤如下: - 创建一个 Java 项目。 - 添加 JavaFX 库到项目中。 - 创建一个 Java 类,并将其扩展为 Application 类。 - 在 start() 方法中编写应用程序的 GUI 代码。 以下是一个简单的示例: ``` import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class MyJavaFXApp extends Application { @Override public void start(Stage primaryStage) { // 创建一个标签 Label label = new Label("Hello, JavaFX!"); // 创建一个 StackPane 布局 StackPane root = new StackPane(); root.getChildren().add(label); // 创建一个场景 Scene scene = new Scene(root, 300, 250); // 设置场景到舞台 primaryStage.setScene(scene); // 设置舞台标题 primaryStage.setTitle("My JavaFX App"); // 显示舞台 primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 3. 运行 JavaFX 应用程序 要运行 JavaFX 应用程序,您可以在 IDE 中单击“运行”按钮,或者在命令行中使用以下命令: ``` java --module-path /path/to/javafx-sdk-16/lib --add-modules javafx.controls,javafx.fxml MyJavaFXApp ``` 其中,`/path/to/javafx-sdk-16/lib` 是 JavaFX SDK 的路径。如果您使用的是其他版本的 JavaFX SDK,则需要修改路径。 4. JavaFX 控件 JavaFX 提供了许多常用的 GUI 控件,例如按钮、标签、文本框、下拉列表框等等。您可以使用这些控件构建自己的用户界面。 以下是一些常用的 JavaFX 控件: - Button:按钮控件。 - Label:标签控件。 - TextField:文本框控件。 - TextArea:多行文本框控件。 - ChoiceBox:下拉列表框控件。 - CheckBox:复选框控件。 - RadioButton:单选按钮控件。 - ToggleButton:切换按钮控件。 - ComboBox:组合框控件。 使用这些控件的示例代码如下: ``` import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.ChoiceBox; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.RadioButton; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.control.ToggleButton; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class MyJavaFXApp extends Application { @Override public void start(Stage primaryStage) { // 创建一个标签 Label label = new Label("JavaFX Controls"); // 创建一个文本框 TextField textField = new TextField(); // 创建一个多行文本框 TextArea textArea = new TextArea(); // 创建一个按钮 Button button = new Button("Click Me"); // 创建一个复选框 CheckBox checkBox = new CheckBox("Check Me"); // 创建两个单选按钮 RadioButton radioButton1 = new RadioButton("Option 1"); RadioButton radioButton2 = new RadioButton("Option 2"); // 创建一个切换按钮 ToggleButton toggleButton = new ToggleButton("Toggle Me"); // 创建一个下拉列表框 ChoiceBox<String> choiceBox = new ChoiceBox<>(); choiceBox.getItems().addAll("Option 1", "Option 2", "Option 3"); choiceBox.setValue("Option 1"); // 创建一个组合框 ComboBox<String> comboBox = new ComboBox<>(); comboBox.getItems().addAll("Option 1", "Option 2", "Option 3"); comboBox.setEditable(true); // 创建一个网格布局 GridPane gridPane = new GridPane(); gridPane.setPadding(new Insets(10)); gridPane.setHgap(10); gridPane.setVgap(10); // 将控件添加到网格布局中 gridPane.add(label, 0, 0); gridPane.add(textField, 1, 0); gridPane.add(textArea, 0, 1, 2, 1); gridPane.add(button, 0, 2); gridPane.add(checkBox, 1, 2); gridPane.add(radioButton1, 0, 3); gridPane.add(radioButton2, 1, 3); gridPane.add(toggleButton, 0, 4); gridPane.add(choiceBox, 1, 4); gridPane.add(comboBox, 0, 5, 2, 1); // 创建一个水平箱布局 HBox hBox = new HBox(); hBox.setPadding(new Insets(10)); hBox.setSpacing(10); hBox.getChildren().addAll(button, checkBox, radioButton1, radioButton2, toggleButton); // 创建一个垂直箱布局 VBox vBox = new VBox(); vBox.setPadding(new Insets(10)); vBox.setSpacing(10); vBox.getChildren().addAll(label, textField, textArea, hBox, choiceBox, comboBox); // 创建一个场景 Scene scene = new Scene(vBox, 400, 300); // 设置场景到舞台 primaryStage.setScene(scene); // 设置舞台标题 primaryStage.setTitle("My JavaFX App"); // 显示舞台 primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 5. JavaFX 布局 JavaFX 提供了许多常用的布局,例如网格布局、边界布局、流布局等等。您可以使用这些布局来组织自己的用户界面。 以下是一些常用的 JavaFX 布局: - GridPane:网格布局。 - BorderPane:边界布局。 - HBox:水平箱布局。 - VBox:垂直箱布局。 - FlowPane:流布局。 使用这些布局的示例代码如下: ``` import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.BorderPane; import javafx.scene.layout.FlowPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class MyJavaFXApp extends Application { @Override public void start(Stage primaryStage) { // 创建一个标签 Label label = new Label("JavaFX Layouts"); // 创建一个按钮 Button button = new Button("Click Me"); // 创建一个网格布局 GridPane gridPane = new GridPane(); gridPane.setPadding(new Insets(10)); gridPane.setHgap(10); gridPane.setVgap(10); // 将控件添加到网格布局中 gridPane.add(label, 0, 0); gridPane.add(button, 1, 0); // 创建一个边界布局 BorderPane borderPane = new BorderPane(); borderPane.setPadding(new Insets(10)); borderPane.setTop(label); borderPane.setCenter(button); // 创建一个水平箱布局 HBox hBox = new HBox(); hBox.setPadding(new Insets(10)); hBox.setSpacing(10); hBox.getChildren().addAll(label, button); // 创建一个垂直箱布局 VBox vBox = new VBox(); vBox.setPadding(new Insets(10)); vBox.setSpacing(10); vBox.getChildren().addAll(label, button); // 创建一个流布局 FlowPane flowPane = new FlowPane(); flowPane.setPadding(new Insets(10)); flowPane.setHgap(10); flowPane.setVgap(10); flowPane.getChildren().addAll(label, button); // 创建一个场景 Scene scene = new Scene(flowPane, 400, 300); // 设置场景到舞台 primaryStage.setScene(scene); // 设置舞台标题 primaryStage.setTitle("My JavaFX App"); // 显示舞台 primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 6. JavaFX 事件处理 JavaFX 提供了许多常用的事件,例如鼠标点击事件、键盘按下事件、窗口关闭事件等等。您可以使用这些事件处理程序来响应用户的操作。 以下是一些常用的 JavaFX 事件: - MouseEvent:鼠标事件。 - KeyEvent:键盘事件。 - WindowEvent:窗口事件。 - ActionEvent:动作事件。 使用这些事件处理程序的示例代码如下: ``` import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class MyJavaFXApp extends Application { @Override public void start(Stage primaryStage) { // 创建一个标签 Label label = new Label("Hello, JavaFX!"); // 创建一个按钮 Button button = new Button("Click Me"); // 创建一个 StackPane 布局 StackPane root = new StackPane(); root.getChildren().addAll(label, button); // 创建一个场景 Scene scene = new Scene(root, 300, 250); // 设置按钮的鼠标点击事件处理程序 button.setOnMouseClicked((MouseEvent event) -> { label.setText("Button Clicked"); }); // 设置窗口关闭事件处理程序 primaryStage.setOnCloseRequest((event) -> { System.out.println("Window Closed"); }); // 设置场景到舞台 primaryStage.setScene(scene); // 设置舞台标题 primaryStage.setTitle("My JavaFX App"); // 显示舞台 primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 以上就是 JavaFX 的快速入门教程。希望可以帮助您了解 JavaFX 的基础知识,并开始构建自己的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值