编程语言
首页 > 编程语言> > 如何从Java 9中的另一个模块添加到JavaFX Scene样式表?

如何从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