如何在SceneBuilder中使AnchorPane内的面板/矩形居中且保持原有尺寸
在SceneBuilder中让面板/矩形始终居中且保持固定尺寸的方法
方法一:用StackPane(最简单推荐)
StackPane本身默认就会把所有子节点居中显示,而且不会强制修改子节点的尺寸,完美匹配你的需求:
- 打开SceneBuilder,把当前的根容器(比如AnchorPane)换成StackPane,或者在现有容器里嵌套一个StackPane。
- 把你要居中的正方形面板(或矩形)拖进StackPane。
- 选中面板,在右侧Properties面板里设置:
Pref Width和Pref Height设为相同值(比如200,就是你要的正方形大小)Max Width和Max Height也设成和Pref一样的数值Min Width和Min Height同样设为这个数值
这样不管窗口怎么缩放,面板都会一直保持正方形且居中。
方法二:继续用AnchorPane(如果不想换容器)
之前用AnchorPane出问题是因为你设置了锚点约束(比如同时绑定左右/上下),导致面板被拉伸。按下面步骤改:
- 选中AnchorPane里的面板,在右侧Layout面板里,把
Top Anchor、Bottom Anchor、Left Anchor、Right Anchor全部设为USE_COMPUTED_SIZE(取消所有锚点绑定)。 - 同样设置面板的
Pref/Max/Min Width和Pref/Max/Min Height为相同的固定值,确保尺寸不变。 - 在Layout面板里找到
Alignment,选择CENTER,这样面板就会在AnchorPane里居中,且不会被拉伸。
FXML代码示例(StackPane版本)
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.StackPane?> <?import javafx.scene.layout.Pane?> <StackPane xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1"> <!-- 黑色正方形面板,固定尺寸200x200,自动居中 --> <Pane style="-fx-background-color: black;" prefWidth="200" prefHeight="200" maxWidth="200" maxHeight="200" minWidth="200" minHeight="200"/> </StackPane>
内容的提问来源于stack exchange,提问作者markusnether
相关产品推荐
相关产品推荐

