【问题标题】:Creating multiple Scenes with CLASS and calling them(classes)使用 CLASS 创建多个场景并调用它们(类)
【发布时间】:2017-03-10 13:47:33
【问题描述】:

我在学校被分配构建一个小型 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);

我在 Main 这个也有:

   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);

但是,当我点击按钮后,窗口变成了空的,并没有改变布局。

想法?

【问题讨论】:

标签: java javafx


【解决方案1】:

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

在主类中定义以下变量:

public static Stage stage;
public static Scene sceneMain;

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

stage = primaryStage;
sceneMain = scene;

完成此操作后,您可以轻松地调用另一个班级的舞台,然后像这样返回主场景:(这是您可以在 buttonclick() 事件下放置的内容)

Main.stage.setScene(sceneMain);

或者你可以通过简单地将你想要的场景放在 .setscene() 中来设置另一个场景;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多