如何从Java 9中的另一个模块添加到JavaFX Scene样式表?
作者:互联网
我有两个JPMS模块:
>模块-a
>模块-b
在模块-a中我有类似的东西:
public class MyAppplication extends Application {
....
public static void addCss(String path) {
stage.getScene().getStylesheets().add(path);
}
}
在module-b中我有CSS文件,我想添加到MyApplication.如何在module-b中的代码中执行此操作?我无法理解如何从另一个模块传递路径.
我的意思是在模块b中:
...
MyApplication.addCss(???);
...
编辑
在OSGi中,我在bundle-b中使用了以下解决方案(假设,该模块-a是bundle-a,而module-b是bundle-b):
String pathInBundleB = "com/foo/package-in-bundle-b/file.css"
Bundle bundleB = FrameworkUtil.getBundle(this.getClass()).getBundleContext().getBundle();
URL cssFileUrl = bundleB.getEntry(pathInBundleB);
MyApplication.addCss(cssFileUrl.toString());
解决方法:
我在@AlanBateman的帮助下找到了解决方案.
假设,css文件在com / foo / some-package / file.css中,我在module-b中使用以下代码:
package com.foo.some-package;
public class SomeClass {
public void init() {
MyApplication.addCss(this.getClass().getResource("base.css").toString());
}
}
另外,在module-b的module-info中我有:
opens com.foo.some-package to module-a;
标签:java,javafx,java-9,java-module,javafx-9 来源: https://codeday.me/bug/20190705/1390316.html