如何让JavaFXCSS工作?

如何让JavaFXCSS工作?,javafx,javafx-css,Javafx,Javafx Css,因此,我很难在JavaFX项目中使用CSS样式 我添加了一个外部样式表,其中包含: scene.getStylesheets().add("Style.css"); 。。。指向同一文件夹中文件Style.css的链接: .root{ -fx-background-color: #000000; } .button { -fx-background-color: #AB4642; } 但是,当我运行程序时,不会发生任何更改。按钮保持不变,背景保持不变。我曾经尝试过为butto

因此,我很难在JavaFX项目中使用CSS样式

我添加了一个外部样式表,其中包含:

scene.getStylesheets().add("Style.css");
。。。指向同一文件夹中文件Style.css的链接:

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

.button {
    -fx-background-color: #AB4642;
}
但是,当我运行程序时,不会发生任何更改。按钮保持不变,背景保持不变。我曾经尝试过为button分配唯一的类,并以这种方式设置它们的样式,但这并没有帮助

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

来自

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

所以

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

如果要相对于当前类进行搜索,请从
getClass().getResource(…)
获取URL,然后调用
toExternalForm()
将其转换为字符串:

URL stylesheetURL = getClass().getResource("Style.css");
scene.getStylesheets().add(stylesheetURL.toExternalForm());
或者,只需指定完整路径,例如,如果样式表在包
com.mycompany.myproject
中,则执行以下操作

scene.getStylesheets().add("com/mycompany/myproject/Style.css");

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

所以

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

如果要相对于当前类进行搜索,请从
getClass().getResource(…)
获取URL,然后调用
toExternalForm()
将其转换为字符串:

URL stylesheetURL = getClass().getResource("Style.css");
scene.getStylesheets().add(stylesheetURL.toExternalForm());
或者,只需指定完整路径,例如,如果样式表在包
com.mycompany.myproject
中,则执行以下操作

scene.getStylesheets().add("com/mycompany/myproject/Style.css");

运行应用程序时是否有关于找不到CSS资源的警告?@James\u D现在您提到它,它会触发一个警告:warning:resource“Style.CSS”not found。运行应用程序时是否有关于找不到CSS资源的警告?@James\u D现在您提到它,它触发一个警告:警告:未找到资源“Style.css”。