如何从不同的类调用public void start(Stage primaryStage)方法

时间:2020-03-06 22:26:34

标签: javafx

我是JavaFX的新手,所以我的编码不是最好的。我的程序有一个带有2个不同场景的舞台。为了更好的概述,我为第二个场景创建了一个新类。在第二个场景中,我想使用一个按钮返回第一个场景。方法:primaryStage.setScene(scene)无法正常工作,我不知道为什么。有人可以帮帮我吗? :)

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            GridPane primarygridpane = new GridPane();
            Scene scene = new Scene(primarygridpane,400,400);
            ...
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

public class Harnwegsinfektion {

    public static void create (Stage primaryStage){
        GridPane secondarygridpane = new GridPane();
        Scene scene2 = new Scene(secondarygridpane,400,400);

        buttonBack.setOnAction(new EventHandler<ActionEvent>(){
            @Override
            public void handle(ActionEvent e) {
                primaryStage.setScene(scene);
            }
        });

        primaryStage.setScene(scene2);
        primaryStage.show();
    }
}

1 个答案:

答案 0 :(得分:0)

问题在于您的scene变量名为scene2,而您正在使用setScene()调用scene

我真的不知道调用create()的时间和地点,但是如果您想从按钮返回第一个场景,则必须在切换之前保存原始场景:

public static void create (Stage primaryStage){
    GridPane secondarygridpane = new GridPane();
    Scene scene2 = new Scene(secondarygridpane,400,400);

    Scene originalScene=primaryStage.getScene(); //save the previous scene

        buttonBack.setOnAction(new EventHandler<ActionEvent>(){
            @Override
            public void handle(ActionEvent e) {
                primaryStage.setScene(originalScene); //go back to the previous scene
            }
        });

        primaryStage.setScene(scene2);
        primaryStage.show();
    }