2017-04-09 4 views
0

私のシーンhomestartのシーンとして使用しようとしています。
しかし、私の300 x 300を取得する代わりに、私は空白の900 x 400の画面が表示されます。おそらくそれは非常に簡単に検出可能なものですが、私はそれを見ていないのですか?JavaFXの各シーンにスタンドアロンのメソッドを使用

private Scene home; 
    private Stage window;  

    public Scene home(Scene home) { 
     // build my scene 
     return home = new Scene(root, 300, 300); 
    } 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     window = primaryStage; 
     window.setScene(home); 
     window.show(); 
    } 

私はstartからそれらを保つことができるようにする方法として、私のシーンを作成しようとしています。
あとでシーンを切り替える予定です:btn.setOnAction(e -> window.setScene(anotherScene));、ありがとうございます!

答えて

1

homeメソッドを呼び出すことはありません。したがって、homeフィールドはnullのままです。これはwindow.setSceneに渡す値です。

さらに私はhomeメソッドは奇妙な方法で実装されて呼びたい:

public Scene home(Scene home) { 

パラメータが読み込まれることはありません。

return home = new Scene(root, 300, 300); 

これは、Javaは、コールによって値であるので、それは、何の効果も持っていないシーンを返す前にないシーンに、メソッドパラメータをする値を割り当てます。

あなたはこのようにそれを実現することができます。

private Scene home; 
private Stage window;  

public Scene home() { 
    if (home == null) { 
     // build my scene 
     home = new Scene(root, 300, 300) 

     // or maybe do this without testing, if the scene was created before??? 
    } 
    return home; 
} 

@Override 
public void start(Stage primaryStage) throws Exception { 
    window = primaryStage; 
    window.setScene(home()); // use the method here 
    window.show(); 
} 
関連する問題