2016-10-31 12 views
0

自分自身のコントローラーを使用する2番目のシーンを開始します。他のクラスからそのコントローラ内のメソッドにアクセスしたいと思います。新しいシーンコントローラのハンドルを取得するにはどうしたらいいですか?新しいステージのハンドルを取得する方法Controller JavaFX

public void startNewScene() throws IOException{ 
    Stage stage = new Stage(); 
    Partent root; 
    root = FXMLLoader.load(getClass().getResource("fxmlfile.fxml"); 
    Scene scene = new Scene(root); 
    Stage.setScene(scene); 
    stage.show(); 

} 

答えて

2

(代わりに静的load(...)メソッドを使用しての)FXMLLoaderインスタンスを作成し、それから、コントローラを得る:

public void startNewScene() throws IOException{ 
    Stage stage = new Stage(); 
    FXMLLoader loader = new FXMLLoader(getClass().getResource("fxmlfile.fxml")); 
    Parent root = loader.load(); 
    MyController controller = loader.getController(); 
    Scene scene = new Scene(root); 
    Stage.setScene(scene); 
    stage.show(); 
} 

明らかfxmlfile.fxml用コントローラの実際のクラス名とMyControllerを置き換えます。

+0

ClassCastException AnchorPaneを取得しています。FXMLLoaderにキャストできません。私もBorderPaneに変更しました。同じエラーがFXMLLoaderにキャストできません。 – Moe

+0

@Moe私のコードを間違ってコピーしました。 –

+0

あなたは正しいです!新しいFXMLLoader(getClass())を実行する代わりに、FXMLLoader.load(getClass())を実行しました。あなたの助けのためのthx! – Moe

関連する問題