2017-09-22 99 views
4

我有兩個JPMS模塊:如何從Java 9中的其他模塊添加到JavaFX Scene樣式表?

  • 模塊-一個
  • 模塊-B

在模塊-一個我有類似:

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

在模塊-B我有要添加到MyApplication的CSS文件。如何在模塊-B的代碼中做到這一點?我無法理解如何從另一個模塊傳遞路徑。

我的意思是在模塊-B:

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

EDIT
在OSGi中我用下面的溶液中bundle-b(假設,該模塊-一個呈束狀-a和模塊-B呈束狀-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()); 
+0

什麼都有你到目前爲止嘗試過?用這個更新問題,請不要在沒有調試或嘗試的情況下發布問題。 – nullpointer

+1

另請指明,這是不是類似於https://stackoverflow.com/questions/46369101/how-to-get-resourcebundle-from-another-module-in-java-9? – nullpointer

+0

module-b可以訪問自己的資源,因此module-b應該有一個公共方法,它將內部調用的結果返回給Class.getResource或Class.getResourceAsStream。 – VGR

回答

1

我在@AlanBateman的幫助下找到了解決方案。

假設,即CSS文件中com/foo/some-package/file.css我用模塊-B下面的代碼:

package com.foo.some-package; 

public class SomeClass { 

    public void init() { 
     MyApplication.addCss(this.getClass().getResource("base.css").toString()); 
    } 
} 

此外,在模塊B的模塊的信息,我有:

opens com.foo.some-package to module-a; 
相關問題