JavaFX中FXML引用的CSS无法加载背景图片问题求助
解决JavaFX AnchorPane背景图片不显示问题
1. 修正CSS选择器与FXML元素的匹配
你在最小复现步骤里给AnchorPane设置了id="anchor",但CSS中使用的是类选择器.anchor,这会导致样式无法绑定到目标控件。二选一解决:
- 将CSS选择器改为ID选择器:
#anchor { -fx-background-image: url('img/Sfondo.png'); -fx-background-size: 100% 100%; } - 或者给AnchorPane添加class属性替代id:
<AnchorPane class="anchor" ...>
2. 调整图片引用路径
CSS中图片路径是相对于CSS文件本身的位置,而非类路径根目录,根据你的项目结构修正:
原项目结构适配路径
若application.css在resources/name/memoryname/css/下,图片在resources/name/memoryname/css/img/Sfondo.png,则CSS路径写法:
.anchor { -fx-background-image: url('img/Sfondo.png'); /* 或 ./img/Sfondo.png,效果一致 */ -fx-background-size: 100% 100%; }
最小复现项目适配路径
若style.css与图片放在FXML同一目录下,需去掉路径开头的斜杠:
.anchor { -fx-background-image: url('YOURIMAGENAME.png'); -fx-background-size: 100% 100%; }
注:开头加
/表示从类路径根目录查找,同目录下无需添加。
3. 验证资源打包完整性
执行Maven清理编译后,检查target/classes目录:
- 确认
css和img目录完整复制到target/classes/name/memoryname/下 - 检查
Sfondo.png存在于target/classes/name/memoryname/css/img/中
4. 确认FXML的CSS引用路径
你当前FXML的CSS引用代码:
<stylesheets> <URL value="@css/application.css" /> </stylesheets>
该路径是相对FXML文件的位置,若FXML在resources/name/memoryname/下,此写法可正确指向同目录下的css/application.css,无需修改。
额外排查点
- 检查图片文件名大小写(Linux/macOS下大小写敏感)
- 确认图片格式为JavaFX支持的类型(PNG、JPG、BMP等)
内容的提问来源于stack exchange,提问作者Gabe Lily
相关产品推荐
相关产品推荐

