未找到eclipse JavaFX css资源

时间:2015-10-30 11:09:06

标签: java css eclipse javafx

我遇到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");

scene.getStylesheets().add("file:///images/stylesheet.css");

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

似乎没什么用。就像Eclipse无法识别样式表一样。

4 个答案:

答案 0 :(得分:2)

问题是java的<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.6/Rx.min.js"></script>适用于URL,但是它没有很好地将File.toString()转换为url,所以你必须传递一个已经转换的String到文件,到URL,然后回到String。因此,当它将字符串解析为URL时,它不会阻塞空格字符。

这有效:

com.sun.javafx.css.StyleManager

答案 1 :(得分:0)

尝试使用getClass().getResource("/images/stylesheet.css");

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

答案 2 :(得分:0)

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文件的位置。

答案 3 :(得分:0)

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

scene.getStylesheets().add(getClass().getResource("cssfile.css").toString());

如果调用上述命令的文件与css文件不在同一pacakge /目录中,请添加相对路径,即"images/cssfile.css"