找不到eclipse JavaFX css资源

找不到eclipse JavaFX css资源,java,css,eclipse,javafx,Java,Css,Eclipse,Javafx,我对JavaFXGUI的样式表有问题。 我的样式表无法加载,出现以下错误: com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged WARNING: Resource "file:images\stylesheet.css" not found. 我尝试将stylesheet.css与图像放在同一个文件夹中。图像没有问题,但是找不到样式表 scene.getStylesheets().add("images\\stylesheet.

我对
JavaFX
GUI的样式表有问题。 我的样式表无法加载,出现以下错误:

com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged
WARNING: Resource "file:images\stylesheet.css" not found.
我尝试将stylesheet.css与图像放在同一个文件夹中。图像没有问题,但是找不到样式表

scene.getStylesheets().add("images\\stylesheet.css");
我也试过:

scene.getStylesheets().add("file:images\\stylesheet.css");
以及:

我还尝试了不同的文件夹,比如
.java
文件所在的文件夹

似乎什么都不管用。这就像Eclipse不识别样式表一样。

尝试使用
getClass().getResource(“/images/stylesheet.css”)


JavaFX中的图像在内部实现了从类加载器加载资源,但不幸的是,样式表不是这样。如果你说:

new Image("/Images/background.png");
它被转换为:

new Image(getClass().getClassLoader().getResource("Images/background.png");
但是在
getStylesheets().add()
的情况下不会发生这种情况。因此,为了运行它,您需要自己添加一个类加载器:

scene.getStylesheets().add(
      getClass().getClassLoader().getResource("images\\stylesheet.css"));

注意:此处的路径取决于css文件的位置。

问题是java的
com.sun.javafx.css.StyleManager
可以处理url,但它不能很好地将file.toString()转换为url,因此您必须将已转换为文件的字符串传递给url,回到一根绳子。因此,当它将字符串解析为URL时,它不会阻塞空格字符

这项工作:

String fontSheet = fileToStylesheetString( new File ("location") );

if ( fontSheet == null ) {
    //Do Whatever you want with logging/errors/etc.
} else {
    scene.getStylesheets().add( fontSheet );
}

public String fileToStylesheetString ( File stylesheetFile ) {
    try {
        return stylesheetFile.toURI().toURL().toString();
    } catch ( MalformedURLException e ) {
        return null;
    }
}

除了一个扩展名
toString()
调用之外,我使用的解决方案与前面的答案几乎相同:

scene.getStylesheets().add(getClass().getResource("cssfile.css").toString());
如果调用上述命令的文件与css文件不在同一pacakge/目录中,请添加相对路径,即
“images/cssfile.css”

String fontSheet = fileToStylesheetString( new File ("location") );

if ( fontSheet == null ) {
    //Do Whatever you want with logging/errors/etc.
} else {
    scene.getStylesheets().add( fontSheet );
}

public String fileToStylesheetString ( File stylesheetFile ) {
    try {
        return stylesheetFile.toURI().toURL().toString();
    } catch ( MalformedURLException e ) {
        return null;
    }
}
scene.getStylesheets().add(getClass().getResource("cssfile.css").toString());