2017-02-07 54 views
-5

我創建了一個涉及兩種類型用戶登錄的應用程序。 登錄後,應用程序應該加載相應的用戶界面。我在網上搜索了 的解決方案,其中涉及使用反射 包。但是,要麼加載主類,然後調用 方法,否則加載所有類。我有兩種不同的封裝爲這兩種類型 用戶的代碼,目前我在工作目錄中運行這些 封裝應用中已經(即一個項目 名下)如何在運行時加載包

最終的邏輯是:我有三個罐子。

  1. 的main.jar
  2. admin.jar
  3. tchr.jar

main.jar由登錄用戶界面。驗證密碼後該應用 應該加載要麼admin.jartchr.jar

林使用JavaFX,並且我想使用相同的「場景」對象 修改。我使用BorderPane,頂部爲Menubar,中心爲 登錄。無論admin.jar和tchr.jar使用GridPane登錄後我打算 是(假設用戶是管理員)的BorderPane設置其中心 GridPaneadmin.jar

它很像IDE下載 後如何使用它的插件,在Eclipse ide特別插件ide自動識別可用的 插件並相應地修改ui

+3

檢查[這]問 –

回答

-1

如果它是一個紀念和工業項目,我建議您使用OSGI作爲動態模塊解決方案。否則,您應該仔細研究Reflection & Java類加載以構建您自己的精簡解決方案。

加載UI動態地你應該使用FXMLLoader。存儲您GridPanes作爲fxmls在動態罐子,然後使用類似如下的代碼在運行時加載它們:

public static Node loadResource(URL resource, Object controller){ 
    final FXMLLoader loader = new FXMLLoader(resource); 
    if (controller!=null) loader.setController(controller); 
    try { 
     Node node = loader.load(); 
     log.debug("resource {} loaded", resource); 
     return node; 
    } catch (IOException e) { 
     log.error("could not load resource {}",resource, ExUtils.getRootCause(e)); 
     return null; 
    } 
} 
+0

感謝,它是一個個人項目,我不(/幫助/ MCVE)前「不想使用FXML,和u可以PLZ給了Java反射教程 – pebble

+0

一些很好的聯繫@NumaNuma參見[我應該如何裝入罐子在運行時動態](http://stackoverflow.com/questions/60764/how-should- I-負載罐-動態在運行時) – rvit34