我被分配到学校建立一个小型JAVAFX程序,其中的按钮可以穿过不同的场景(布局)。
我的程序是一个登录窗口和详细信息窗口。但我必须在与Main类不同的类中创建详细信息窗口。当它是一个班级时,如何让按钮从Main调用'详细信息窗口'?
(参见createAccountBtn.setOnAction)
所以这是交易:我创建了一个接口,我把这个方法:
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);
然而,在我点击按钮后,窗口变空并且不会改变布局。
想法?
答案 0 :(得分:-1)
公共静态变量可以在类之间传递变量。这是我能想到的最简单的方法来实现你想要的结果。
在主类中定义以下变量:
public static Stage stage;
public static Scene sceneMain;
假设您已经在主构造函数中设置了场景并使用了舞台,请在设置舞台和场景后编写以下代码。
stage = primaryStage;
sceneMain = scene;
完成此操作后,你可以轻松地通过另一个课程来回到舞台,然后回到你的主场景:(这就是你在buttonclick()事件中可以放的东西)
Main.stage.setScene(sceneMain);
或者您可以通过简单地将所需场景放入.setscene();
来设置另一个场景