JavaFX CSS "Resource not found"

标签 java css javafx classpath

当我尝试更改我的 css 文件所在的文件夹时,出现此错误:

WARNING: com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged Resource "file:/C:/[path-to-project]/Test/resources/css/main.css" not found.

我复制了 URL 并将其粘贴到文件管理器中,它打开了文件,所以我知道它存在。

public static void main(String[] args)
{
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception
{
    primaryStage.setTitle("New Window");

    Scene scene = new Scene(new AnchorPane(), 800, 600);
    primaryStage.setScene(scene);

    URL css = new URL("file:///" + 
            new File("resources/css").getAbsolutePath().replace("\\", "/") + 
            "/main.css");
    scene.getStylesheets().clear();
    scene.getStylesheets().add(css.toExternalForm());

    primaryStage.show();
}

这是我的eclipse元素布局[also as an image] :

Test
├───src
│   └───com
│       └───Client.java
├───JRE System Library [JavaSE-1.8]
└───resources
    └───css
        └───main.css

我试过:

scene.getStylesheets().add(getClass().getResource("/resources/css/main.css")); 
scene.getStylesheets().add(getClass().getResource("resources/css/main.css"));
scene.getStylesheets().add(getClass().getResource("../resources/css/main.css"));

我还尝试使用 fxml 添加 css 文件:

stylesheets="@../resources/css/main.css"
stylesheets="@/resouces/css/main.css"
stylesheets="@resources/css/main.css

最佳答案

将你的 main.css 文件放在 resources/com 目录中(所以 resources + 加载它的类的包)然后你可以使用一个简单的(假设你的类被命名为 Client 并且它在 com 包中):

scene.getStylesheets().add(Client.class.getResource("main.css").toExternalForm());

关于JavaFX CSS "Resource not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163652/

相关文章:

java - 如何更改持有 AccountInfo 类型对象的 ListView 上的文本?

java - 如何打印与变量值对应的一组字符?

java - 字节格式的 longs 的快速(呃)比较?

java - 为什么在使用带有类名的静态变量时未显示非法前向引用错误

css - 标题上的透明框

jquery - 使用媒体查询将两个部分合二为一

java - 我无法获取 spring-boot 应用程序中的属性值

css 下拉菜单不适用于任何浏览器

java - 登录后spring boot entityManagerFactory初始化

java - 如何在javaFx中设置进度条?