java - getStylesheets().add(...) 不适用于 Windows (7)

标签 java css javafx stylesheet

(向下滚动查看解决方案)

我在 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/

相关文章:

css - Flex 4.5 应用程序背景颜色不会变黑

JavaFX - 将数据存储到相应的按钮

java - 在 OOZIE-4.1.0 中运行多个工作流时出错

jquery - 从 ajax 调用时 DataTable 不应用样式

css问题文本显示没有空格

JavaFX:如何在新场景中更新 observableArrayList 中选定的项目。没有传递整组数据支持吗?

来自 imageView 的 Java Fx 图像更新

java - MVC 模式和 JTable

java - 尝试重新定义 sun.reflect.GenerateMethodAccessor1 时 ByteBuddy 失败

Java + Spring Boot + REST 安全问题