JavaFX界面布局求助:顶部左侧按钮与中央Logo无法正确对齐
JavaFX顶部布局调整方案
要实现主页按钮居左、Logo居中的顶部布局,你需要调整HBox的尺寸约束和子组件的布局规则,以下是修正后的FXML代码:
<BorderPane prefHeight="720.0" prefWidth="1280.0" stylesheets="@../style/artisti_game.css" xmlns="http://javafx.com/javafx/23.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="it.viques.matteomusicquiz.controllers.ArtistiGameController"> <top> <!-- 让HBox填充BorderPane顶部的全部宽度 --> <HBox prefHeight="100.0" prefWidth="1280.0" maxWidth="Double.MAX_VALUE"> <children> <!-- 主页按钮固定在左侧,不自动扩展 --> <Button mnemonicParsing="false" text="主页" /> <!-- 添加空白区域占满按钮与Logo之间的空间,实现Logo居中 --> <Region HBox.hgrow="ALWAYS" /> <ImageView fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true"> <image> <Image url="@../images/main_logo.png" /> </image> </ImageView> <!-- 添加右侧空白区域,保证Logo始终居中 --> <Region HBox.hgrow="ALWAYS" /> </children> </HBox> </top> </BorderPane>
关键修改点:
- 移除HBox的
alignment="TOP_CENTER",改用空白区域(Region)分配空间来控制子组件位置 - 将HBox的
prefWidth设为与BorderPane一致的1280.0,并设置maxWidth="Double.MAX_VALUE",确保HBox填满顶部区域 - 移除按钮的
HBox.hgrow="ALWAYS",避免按钮自动拉伸 - 在按钮与Logo之间、Logo右侧各添加一个
Region并设置HBox.hgrow="ALWAYS",两个空白区域平分剩余空间,让Logo保持居中,按钮固定在左侧
内容的提问来源于stack exchange,提问作者Vincenzo Bova
相关产品推荐
相关产品推荐

