JavaFX中结构一致的两个GridPane滚动行为差异排查求助
问题分析与解决方案
核心差异出在ScrollPane的属性配置上:
wrong.fxml里的ScrollPane设置了fitToHeight="true"和fitToWidth="true",这两个属性会强制ScrollPane将内部内容拉伸/压缩至与自身视口完全匹配的尺寸——哪怕GridPane添加行/列后实际尺寸超过视口,内容也会被强行适配,自然不会触发滚动条。correct.fxml里的ScrollPane未设置这两个属性,默认值为false。当GridPane尺寸超出ScrollPane视口时,滚动条会正常显示。
修复方法
修改wrong.fxml中的ScrollPane配置,移除fitToHeight="true"和fitToWidth="true"属性即可:
<!-- 修改前 --> <ScrollPane fx:id="scpGrid" fitToHeight="true" fitToWidth="true" focusTraversable="false" BorderPane.alignment="CENTER"> <!-- 修改后 --> <ScrollPane fx:id="scpGrid" focusTraversable="false" BorderPane.alignment="CENTER">
若需要动态适配场景,也可以在Java代码中根据需求调整这两个属性的值,而非在FXML中固定设为true。
内容的提问来源于stack exchange,提问作者Adalberto J. Brasaca
相关产品推荐
相关产品推荐

