(向下滚动查看解决方案)
我在 Linux 上用 JavaFX 制作了一个程序。我用
scene.getStylesheets().add(
"file:" + Paths.get(System.getProperty("user.dir") + "/resources/style/stylesheet.css").toString());
将我的样式表加载到应用程序中。这在 Linux 下有效,但在 Windows 下无效。无论我做什么它总是说
Aug 01, 2015 5:53:42 PM com.sun.javafx.css.StyleManager loadStyleSheetUnPrivileged
Warning: Resource "file:C:\Users\win7\Desktop\resources\style\stylesheet.css" not found.
有人知道她有什么问题吗?有关键词吗?
提前致谢!
更新: 我试过了
scene.getStylesheets().add(
"file:///" + Paths.get(System.getProperty("user.dir") + "/resources/style/stylesheet.css").toString());
和
URI stylesheetURI = Paths.get(System.getProperty("user.dir") + "/resources/style/stylessheet.css").toUri();
scene.getStylesheets().add(stylesheetURI.toString());
和
Path stylesheetPath = Paths.get(System.getProperty("user.dir") + "/resources/style/stylessheet.css");
scene.getStylesheets().add(stylesheetPath.toUri().toString());
解决方案: 我已经使用以下代码让它在 Linux 和 Windows 上工作:
scene.getStylesheets().add(Paths.get("./resources/style/stylesheet.css").toAbsolutePath().toUri().toString());
在@RealSkeptic 和@brian 的帮助下。谢谢!
最佳答案
user.dir 就是程序启动的当前目录。放一个 .说这是相对于当前目录的路径。然后将其转换为正确的字符串,如图所示。
File f = new File("./resources/style/stylesheet.css");
scene.getStylesheets().add(f.toURI().toURL().toExternalForm());
补充:我查了 user.dir 的定义,Java 的人不使用术语当前目录。相反,他们说
"user.dir" User working directory
关于java - getStylesheets().add(...) 不适用于 Windows (7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31763478/