首页 文章

如何让JavaFX-CSS工作?

提问于
浏览
0

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

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

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

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

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

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

但是,运行程序时不会发生任何更改 . 按钮保持不变,背景保持不变 . 我已经尝试将按钮和样式分配给它们,但这没有用 .

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

1 回答

  • 1

    来自documentation for getStylesheets()

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

    所以

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

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

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

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

    或者,只需指定完整路径,例如如果样式表在包_116708_中,那么就做

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

相关问题