我有一个模块化的 JavaFX 应用程序。当我使用 IDE IntelliJ 运行它时,它可以完美加载所有样式表。
但是,当我将应用程序发布为 Mac 平台的 PKG 并尝试运行时,没有 CSS 应用于该应用程序。 PKG 文件在 Mac 上成功安装 JavaFX 应用程序,但未加载样式表。
应用程序按预期运行,但未应用任何 CSS。
我正在使用 openJDK-15.0.2 并使用 jpackage 生成 PKG 文件。 文件夹结构:
获取资源:
Class clazz = SocketClientFX.class;
Scene scene = new Scene(root);
scene.getStylesheets().add(clazz.getResource("/styles/Styles.css").toString());
我通过在每个资源文件夹的 module-info.java 中添加“opens”解决了这个问题。
例如:
opens styles.common;
opens jsonFiles;
opens images.common;
opens styles.stevePane;
etc...
代码中,各个资源的访问方式如下:
containerBorderPane.getStylesheets().add("/styles/stevePane/loadingWindow.css");
然后我再次构建项目并创建一个新的 PKG 文件。当我安装并再次运行它时,包括 CSS 文件在内的所有资源都已加载。
当通过 getResource() 访问资源时,如下所示,我们不需要在
opens directive
中添加 module-info.java
。
scene.getStylesheets().add(clazz.getResource("/styles/Styles.css").toString());
谢谢@James_D 和@Slaw 的评论。