Как вызвать метод publi c void start (Stage primaryStage) из другого класса - PullRequest
0 голосов
/ 07 марта 2020

Я новичок в JavaFX, поэтому мое кодирование не самое лучшее. В моей программе одна сцена с двумя разными сценами. Для лучшего обзора я создал новый класс для второй сцены. С этой второй сцены я хочу go вернуться к первой, используя кнопку. Метод: 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 голосов
/ 09 марта 2020

Проблема в том, что ваша scene переменная имеет имя scene2 и вы звоните setScene() с scene.

Я действительно не знаю, когда и где вызывается create(), но если вы хотите go вернуться к первой сцене с помощью кнопки, вы должны сохранить оригинальную перед переключением:

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...