2017-04-20 20 views
-1

コントローラ用のFXMLLoaderコントローラを取得できました。その内部のメソッドを更新したいと考えています。これどうやってするの?私はupdateTableというメソッドを持っている私のHierarchyTabControllerでFXMLLoaderでコントローラを更新するには?

 @Override 
     public void handle(MouseEvent event) 
     { 
      FXMLLoader loader = new FXMLLoader(
        getClass().getResource(UIViewConstants.HIERARCHY_TAB_FULLNAME)); 
      HierarchyTabController controller = new HierarchyTabController(dataModel); 
      loader.setController(controller); 
      System.out.println(loader); 
      loader.updateTable(dataModel) //How can I make this work? 

     } 

ので、どのように私はインスタンスから、私は、ローダーから、今取得していますことを呼び出すことができますか?

それが助け場合は、オブジェクトに[email protected]

+1

きっとあなたは 'ローダー、' 'controller.updateTable(...)をしませ意味。 updateTable(...) '???しかし、とにかく、あなたはFXMLをロードしていません。 –

+0

@James_Dそれは私がはいを意味するものですが、どうすればいいですか?私はHierarchyTabController.updateTableを呼び出すことはできません。特定のオブジェクトではないからです。 – Jay266

+1

その意味を理解できません。コントローラは、UI階層に関連付けられたオブジェクトで、FXMLファイルからロードします。ここでは、FXMLファイル( 'loader.load()'は決して呼び出さない)をロードしていないので、 'HierarchyTabController'のインスタンスはどのUIにも関連付けられていません。 (言い換えれば、 'updateTable(..)'がUIのテーブルを更新すると仮定すると、ここで作成したインスタンスには更新するテーブルがありません) –

答えて

0

を出力これは私がそれを実装する方法を次のとおりです。

Parent root; 

try { 
    FXMLLoader fxmlLoader = new FXMLLoader(        
    getClass().getClassLoader().getResource 
    (UIViewConstants.HIERARCHY_TAB_FULLNAME)); // getClassLoader() to avoid problems to find the resources when generating the jar file 

    root = (Parent)fxmlLoader.load(); 

    HierarchyTabController controller = 
    fxmlLoader.<HierarchyTabController>getController(); 
    controller.updateTable(dataModel); 
} catch (IOException e) { 
    logger.debug(e); 
} 
関連する問題