2017-01-31 34 views
1

私はシーンを切り替えるためにアプリケーションを作成しようとしています。ここにコードの一部のコピーがあります。クレジットシーンには、メインのシーンに戻ってくるバックボタンがあります。JavaFXの切り替えシーン

メインシーンのクレジットボタンをクリックしようとすると、白い画面になっています。この問題を解決する良い方法があると私は信じていますか?

public class Application { 
public static void main(String[] args) { 
    javafx.application.Application.launch(GUI.class); 
} 
} 


public class GUI extends Application { 

@Override 
public void start(Stage primaryStage) { 
    Scene mainScene, creditsScene = null; 
    mainScene = getMainScene(primaryStage, creditsScene); 
    creditsScene = getCreditsScene(primaryStage, mainScene); 
    primaryStage.setTitle("Test application"); 
    primaryStage.setScene(mainScene); 
    primaryStage.show(); 
} 

private Scene getMainScene(Stage primaryStage, Scene creditsScene) { 
final Button credits = new Button("Credits"); 
    credits.setOnAction((ActionEvent e) -> { 
     primaryStage.close(); 
     primaryStage.setScene(creditsScene); 
     primaryStage.show(); 
    }); 
    VBox x = new VBox(50); 
    x.setAlignment(Pos.CENTER); 

    x.getChildren().addAll(run, displayInfo, 
      label1, displayInfo, textField, submitName, credits, exit); 

    //scene size 
    Scene scene = new Scene(x, 650, 900); 

    return scene; 
} 


private Scene getCreditsScene(Stage primaryStage, Scene main) { 
    final Button back = new Button("Back"); 
    back.setOnAction((ActionEvent e) -> { 
     primaryStage.setScene(main); 
    }); 
    VBox x = new VBox(50); 
    x.getChildren().addAll(back); 
    Scene credits = new Scene(x, 650, 900); 
    return credits; 
} 

答えて

1

は、文字列の順序を切り替えるようにしてください:

ここ
mainScene = getMainScene(primaryStage, creditsScene); 
creditsScene = getCreditsScene(primaryStage, mainScene); 

あなたはgetMainScene nullに渡します。

+0

クレジットシーンをgetMainScene()に、メインシーンをgetCreditsSceneに渡しているため、正しく動作するように変更するにはどうすればよいですか。このようにして、両方を初期化することはできません。 –

+5

@JasonPerローカル変数ではなくフィールドにします。その後、パラメータとして渡す必要はありません。 –

+0

@James_Dまたは、シーンの1つにパラメータを設定すると、別のシーンへの参照が返されます。 –

関連する問題