0

所以,我无法让 CSS 样式在我的 JavaFX 项目中工作。

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

scene.getStylesheets().add("Style.css");

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

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

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

但是,当我运行程序时不会发生任何变化。按钮保持不变,背景保持不变。我尝试为按钮分配独特的类并以这种方式对其进行样式设置,但这无济于事。

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

4

1 回答 1

2

文档中getStylesheets()

URL 是 [scheme:][//authority][path] 形式的分层 URI。如果 URL 没有 [scheme:] 组件,则 URL 仅被视为 [path] 组件。[path] 的任何前导“/”字符都将被忽略,并且 [path] 被视为相对于应用程序类路径的根的路径。

所以

scene.getStylesheets().add("Style.css");

Style.css在类路径的根目录中查找,而不是相对于当前类。

如果要相对于当前类进行搜索,请从中获取 URLgetClass().getResource(...)并调用toExternalForm()以转换为字符串:

URL stylesheetURL = getClass().getResource("Style.css");
scene.getStylesheets().add(stylesheetURL.toExternalForm());

或者,只需指定完整路径,例如,如果样式表在包com.mycompany.myproject中,则执行

scene.getStylesheets().add("com/mycompany/myproject/Style.css");
于 2017-06-11T22:28:19.123 回答