javafx布局类FlowPane

本文深入探讨JavaFX中FlowPane布局的特点与使用方法,包括其如何沿单一方向排列组件并自动换行,以及如何通过代码实现水平或垂直布局,调整边距、间距等属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FlowPane

流式布局,沿着一个方向排列组件,到末尾重新换行或者换列排列。
与HBox和Vbox不同的是FlowPane会保证将所有组件完整展现出来。

代码

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class TestFlowPane extends Application{

	public static void main(String[] args) {
		launch();
	}
	public void start(Stage primaryStage) throws Exception {
		Button button=new Button ("button");
		
		FlowPane flowPane=new FlowPane();
		flowPane.getChildren().add(button);
		flowPane.getChildren().add(new Button ("button1"));
		flowPane.getChildren().add(new Button ("button2"));
		flowPane.getChildren().add(new Button ("button3"));
		flowPane.getChildren().add(new Button ("button4"));
		flowPane.getChildren().add(new Button ("button5"));
		flowPane.getChildren().add(new Button ("button6"));
		flowPane.setStyle("-fx-background-color:#98FB98");
		Scene scene=new Scene(flowPane);
		primaryStage.setScene(scene);
		primaryStage.setWidth(300);
		primaryStage.setHeight(300);
		primaryStage.show();
	}
}

默认是水平方向排列
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

		//设置外边距
		flowPane.setPadding(new Insets(10));

在这里插入图片描述

		//水平间距
		flowPane.setHgap(10);

在这里插入图片描述

		//垂直间距
		flowPane.setVgap(10);

在这里插入图片描述

		//设置布局方向
		//按垂直方向
		flowPane.setOrientation(Orientation.VERTICAL);

在这里插入图片描述

### JavaFX 布局管理器使用教程 JavaFX 提供了多种布局管理器来简化用户界面的设计过程。这些布局管理器能够自动调整组件的位置和大小,使得开发者可以创建响应式的图形用户界面。 #### 1. GridPane 布局 GridPane 是一种基于网格的布局容器,允许将节点放置在一个由行和列组成的表格结构中[^1]。下面是一个简单的例子展示如何使用 `GridPane` 创建一个登录表单: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import javafx.stage.Stage; public class LoginExample extends Application { @Override public void start(Stage primaryStage) { GridPane grid = new GridPane(); Label lblUsername = new Label("用户名:"); TextField txtUsername = new TextField(); Label lblPassword = new Label("密码:"); TextField txtPassword = new TextField(); // 添加控件到grid pane并指定其位置 grid.add(lblUsername, 0, 0); grid.add(txtUsername, 1, 0); grid.add(lblPassword, 0, 1); grid.add(txtPassword, 1, 1); Scene scene = new Scene(grid, 300, 200); primaryStage.setTitle("Login Form"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` #### 2. HBox 和 VBox 布局 HBox 将子节点水平排列成一行;VBox 则垂直堆叠它们。这两种布局非常适合用于构建简单而直观的UI元素组合。 ```java // 示例代码省略... ``` #### 3. BorderPane 布局 BorderPane 可以把内容分成五个区域:顶部、底部、左侧、右侧以及中心区。这种布局特别适合用来设计具有固定边框的应用程序窗口。 ```java // 示例代码省略... ``` #### 4. FlowPane 布局 FlowPane 自动按照设定的方向(横向或纵向)排列它的孩子节点,并且当空间不足时会自动换行显示剩余的孩子节点。 ```java // 示例代码省略... ``` 通过上述几种常见的布局管理器,可以根据实际需求灵活选择合适的方案来进行GUI开发工作。每种布局都有各自的特点,在具体项目里可根据实际情况选用最恰当的一种或者混合搭配使用多个不同的布局类
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值