因此,我无法在我的JavaFX项目中使用CSS样式。
我添加了一个外部样式表:
.root{
-fx-background-color: #000000;
}
.button {
-fx-background-color: #AB4642;
}
...链接到同一文件夹中的Style.css文件:
innerHTML +=
但是,运行程序时不会发生任何更改。按钮保持不变,背景保持不变。我已经尝试分配唯一的类来按钮和样式,但这没有帮助。
如何让样式真正起作用?如何将外部CSS文件添加到JavaFX项目?
答案 0 :(得分:2)
来自documentation for getStylesheets()
URL是[scheme:] [// authority] [path]形式的分层URI。如果URL没有[scheme:]组件,则URL仅被视为[path]组件。任何领先的' /'忽略[path]的字符,并将[path]视为相对于应用程序类路径根的路径。
所以
scene.getStylesheets().add("Style.css");
将在类路径的根目录中查找Style.css
,而不是相对于当前类。
如果您想要搜索当前班级,请从getClass().getResource(...)
获取网址,然后拨打toExternalForm()
转换为字符串:
URL stylesheetURL = getClass().getResource("Style.css");
scene.getStylesheets().add(stylesheetURL.toExternalForm());
或者,只需指定完整路径,例如如果样式表在包com.mycompany.myproject
中,则执行
scene.getStylesheets().add("com/mycompany/myproject/Style.css");