我遇到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
无法识别样式表一样。
答案 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"
。