javafx布局类Pane

继承关系:

java.lang.Object

  • javafx.scene.Node
    • javafx.scene.Parent
      • javafx.scene.layout.Region
        • javafx.scene.layout.Pane

子类:

AnchorPane, BorderPane, FlowPane, GridPane, HBox, StackPane, TilePane, VBox

Pane是java最基本的布局类,它可以直接使用
public class TestPane extends Application{

	public static void main(String[] args) {
		launch();
	}
	public void start(Stage primaryStage) throws Exception {	
		Pane pane=new Pane();
		Scene scene=new Scene(pane);
	
		primaryStage.setWidth(500);
		primaryStage.setHeight(500);
		primaryStage.setScene(scene);
		primaryStage.setTitle("TestPane");
		primaryStage.show();
	}

}

在这里插入图片描述

添加子节点(Node)

pane的子节点都放在一个可观察列表中(ObservableList <Node>),通过getChildren()方法获取该列表,向列表中添加节点即可。

	Button button=new Button ("button");
	pane.getChildren().add(button);

在这里插入图片描述

布局上会将所有节点放在(0,0)位置,后面的会覆盖前面的
	Button button=new Button ("button");
	pane.getChildren().add(button,new Button ("button2"));

在这里插入图片描述

如果将button放大,则可以看到它:

	Button button=new Button ("button");
	button.setFont(Font.font("sans-serif",40));
	pane.getChildren().add(button,new Button ("button2"));

在这里插入图片描述

节点可设置布局位置:

	Button button=new Button ("button");
	button.setFont(Font.font("sans-serif",40));
	button.setLayoutX(100);
	button.setLayoutY(100);
	pane.getChildren().add(button,new Button ("button2"));

在这里插入图片描述

Pane的大小可以设置初始值,前提是其父节点未有明确指定大小

		pane.setPrefHeight(200);
		pane.setPrefWidth(200);
		//	primaryStage.setWidth(300);
    	//	primaryStage.setHeight(300);

在这里插入图片描述

如果父节点有明确指定大小,pane将适应父节点;

		pane.setPrefHeight(200);
		pane.setPrefWidth(200);
		primaryStage.setWidth(300);
    	primaryStage.setHeight(300);

在这里插入图片描述
Pane的属性监听器

	pane.widthProperty().addListener(listener);

Pane的样式可以通过setStyle方法设置
在这里插入图片描述

	pane.setStyle("-fx-background:red;");

也可以用css修改,以下是官网链接:
https://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#scatterchart

当然Pane也可以设置透明度,透明度也将作用于子节点

	pane.setOpacity(0.5);

在这里插入图片描述

### 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开发工作。每种布局都有各自的特点,在具体项目里可根据实际情况选用最恰当的一种或者混合搭配使用多个不同的布局类
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值