如何在FXML文件中正确关联同包下的CSS样式文件
FXML关联CSS不生效解决方案
- 先移除重复的样式表声明:你当前FXML文件中存在两处引用
styles.css的配置,一处在Pane标签的属性字段中,另一处在<stylesheets>子标签块中,重复声明可能导致加载冲突,保留任意一处即可,建议删除单独的<stylesheets>块。 - 处理样式优先级冲突:你代码中所有Button、Pane控件都写了内联
style属性,JavaFX中内联样式优先级高于外部CSS文件的样式规则,如果你要让外部CSS的配置生效,有两种方案:- 删掉对应控件的内联
style属性配置 - 在CSS文件的对应规则末尾加
!important强制覆盖内联样式,示例如下:
/* 匹配id为btnExit的按钮 */ #btnExit { -fx-background-color: blue !important; } /* 匹配styleClass为test的Pane */ .test { -fx-background-color: red !important; } - 删掉对应控件的内联
- 确认资源打包配置:如果CSS和FXML放在Java源码目录下,Maven、Gradle等构建工具默认不会将非Java后缀的文件打包到输出目录,你需要在构建配置中添加对应资源后缀的包含规则,或者直接将FXML和CSS文件放到项目的resources目录下,保持二者的相对路径和开发时一致即可。
- 快速验证CSS是否加载成功:你可以先在CSS文件中加上述
.test类的样式规则,运行后如果Pane背景变成对应设置的颜色,说明CSS已经关联成功,之前样式不生效是优先级或者选择器匹配的问题,没有变色则是路径或资源打包的问题。
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

