如何让JavaFX-CSS工作?

时间:2017-06-11 18:38:55

标签: javafx javafx-css

因此,我无法在我的JavaFX项目中使用CSS样式。

我添加了一个外部样式表:

.root{
    -fx-background-color: #000000;
}

.button {
    -fx-background-color: #AB4642;
}

...链接到同一文件夹中的Style.css文件:

innerHTML +=

但是,运行程序时不会发生任何更改。按钮保持不变,背景保持不变。我已经尝试分配唯一的类来按钮和样式,但这没有帮助。

如何让样式真正起作用?如何将外部CSS文件添加到JavaFX项目?

1 个答案:

答案 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");