如何在JavaFX(AtlantaFX)中垂直对齐CheckBox文本?
修复AtlantaFX中CheckBox与Label在ToolBar的垂直对齐问题
使用AtlantaFX的Dracula主题时,ToolBar内的CheckBox文本会比Label文本位置偏低,无法实现垂直对齐。以下是通过CSS修复的几种可行方案:
问题复现代码
public class NewMain extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { Application.setUserAgentStylesheet(new Dracula().getUserAgentStylesheet()); var checkBox = new CheckBox("aaaaaaaaa"); var label = new Label("bbbbbbbbbbbb"); var toolBar = new ToolBar(checkBox, label); toolBar.setMinHeight(40); var root = new VBox(toolBar); var scene = new Scene(root, 400, 200); primaryStage.setScene(scene); primaryStage.show(); } }
CSS修复方案
方案1:微调CheckBox文本的垂直偏移
直接针对CheckBox的文本元素设置垂直偏移,快速修正位置:
.check-box .text { -fx-translate-y: -1px; /* 按需调整偏移量,正数向下,负数向上 */ }
方案2:统一控件的垂直对齐规则
给ToolBar内的CheckBox和Label设置一致的垂直对齐方式,从布局层面解决对齐问题:
.tool-bar .check-box, .tool-bar .label { -fx-alignment: center-left; /* 垂直居中、水平居左 */ -fx-content-display: left; }
方案3:调整CheckBox图标的内边距
复选框图标的内边距设置可能导致文本偏移,调整图标内边距间接修正文本位置:
.check-box .box { -fx-padding: 2px; /* 调整图标内边距,适配文本高度 */ }
使用方式
将上述任意一种CSS代码保存为styles.css文件,放置在项目的资源目录下,然后在代码中加载该样式表:
// 在创建Scene后添加 scene.getStylesheets().add(getClass().getResource("/styles.css").toExternalForm());
内容的提问来源于stack exchange,提问作者SilverCube
相关产品推荐
相关产品推荐

