簡體   English   中英

如何從Java 9中的另一個模塊添加到JavaFX Scene樣式表?

[英]How to add to JavaFX Scene stylesheet from another module in Java 9?

我有兩個JPMS模塊:

  • 模塊a
  • 模塊b

在模塊a中,我有類似以下內容:

public class MyAppplication extends Application {
   ....
   public static void addCss(String path) {
       stage.getScene().getStylesheets().add(path);
   }
}

在模塊b中,我有要添加到MyApplication CSS文件。 如何在模塊b中的代碼中執行此操作? 我不明白如何從另一個模塊傳遞路徑。

我的意思是在模塊b中:

...
MyApplication.addCss(???);
...

編輯
在OSGi中,我在bundle-b使用了以下解決方案(假設模塊a是bundle-a,而模塊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());
  }
}

此外,在模塊b的module-info中,我有:

opens com.foo.some-package to module-a;
package org.apis.style.css;

public class CommonCss {

    public static String getCommonCssStyle(){
       return CommonCss.class.getClassLoader().getResource("common.css").toExternalForm();
    }
}

將此包導出到所有。

在其他模塊中,我添加了這個

getStylesheets().add(CommonCss.getCommonCssStyle());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM