使用CLASS创建多个场景并调用它们(类)

时间:2017-03-10 13:47:34

标签: java javafx

我被分配到学校建立一个小型JAVAFX程序,其中的按钮可以穿过不同的场景(布局)。

我的程序是一个登录窗口和详细信息窗口。但我必须在与Main类不同的类中创建详细信息窗口。当它是一个班级时,如何让按钮从Main调用'详细信息窗口'?

(参见createAccountBtn.setOnAction)

Main Class

Detail window Class

所以这是交易:我创建了一个接口,我把这个方法:

 void displayLayout(VBox layout);

然后它在Main中触发此方法:

public void displayLayout(VBox layout){
    Scene scene = new Scene(layout, 200, 200);
    window.setScene(scene);

我也有主要的这个:

   Button createAccountBtn = new Button("Create new account");
    createAccountBtn.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {

           displayLayout(new DetailScreen(listener));

        }
    });
     layout = new VBox();
    layout.getChildren().addAll(accountNumberTF, loginBtn, createAccountBtn);
    layout.setAlignment(Pos.CENTER);
    displayLayout(layout);
    window.show();

哪个是布局选项和按钮。 setOnAction按钮指向一个继承VBox并充当布局的新类:

private ChangeScreenListener listener;

    public DetailScreen(ChangeScreenListener listener) {
        this.listener = listener;

        Button exitBtn = new Button("EXIT");
        TextField input = new TextField();
       VBox layout = new VBox();
        layout.getChildren().addAll(input, exitBtn);

然而,在我点击按钮后,窗口变空并且不会改变布局。

想法?

1 个答案:

答案 0 :(得分:-1)

公共静态变量可以在类之间传递变量。这是我能想到的最简单的方法来实现你想要的结果。

在主类中定义以下变量:

public static Stage stage;
public static Scene sceneMain;

假设您已经在主构造函数中设置了场景并使用了舞台,请在设置舞台和场景后编写以下代码。

stage = primaryStage;
sceneMain = scene;

完成此操作后,你可以轻松地通过另一个课程来回到舞台,然后回到你的主场景:(这就是你在buttonclick()事件中可以放的东西)

Main.stage.setScene(sceneMain);

或者您可以通过简单地将所需场景放入.setscene();

来设置另一个场景