如何通过FXML更改JavaFX中的场景属性

如何通过FXML更改JavaFX中的场景属性,java,javafx,fxml,Java,Javafx,Fxml,任务是更改外观:单击按钮时向窗口添加更多元素。似乎我可以在没有FXML的情况下处理这个问题(见下面的代码),但我真的很喜欢FXML技术并想使用它 您能告诉我如何在FXML中翻译此代码以获得相同的结果吗 public class TestChangeWindow extends Application implements EventHandler<ActionEvent> { Stage mWindow; Button button; ArrayList<

任务是更改外观:单击按钮时向窗口添加更多元素。似乎我可以在没有FXML的情况下处理这个问题(见下面的代码),但我真的很喜欢FXML技术并想使用它

您能告诉我如何在FXML中翻译此代码以获得相同的结果吗

public class TestChangeWindow extends Application implements EventHandler<ActionEvent> {
    Stage mWindow;
    Button button;
    ArrayList<Button> buttons = new ArrayList<>();
    VBox layout;
    Scene scene;

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

    @Override
    public void start(Stage primaryStage) throws Exception {
        mWindow = primaryStage;
        mWindow.setTitle("Some title");

        button = new Button("Add button above");
        button.setOnAction(this);
        layout = new VBox(10);
        layout.getChildren().add(button);

        scene = new Scene(layout, 300, 300);

        mWindow.setScene(scene);
        mWindow.show();
    }

    public void handle(ActionEvent e) {
        buttons.add(new Button("Clone"));
        layout = new VBox(10);

        for (Button buttonsFTL : buttons) {
            layout.getChildren().add(buttonsFTL);
        }
        layout.getChildren().add(button);
        scene = new Scene(layout, 300, 300);
        mWindow.setScene(scene);
        mWindow.show();
    }
}
公共类TestChangeWindow扩展应用程序实现EventHandler{
阶段mWindow;
按钮;
ArrayList按钮=新建ArrayList();
VBox布局;
场景;
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
public void start(Stage primaryStage)引发异常{
mWindow=初级阶段;
mWindow.setTitle(“某些标题”);
按钮=新按钮(“上面添加按钮”);
按钮。设置动作(此);
布局=新的VBox(10);
layout.getChildren().add(按钮);
场景=新场景(布局,300300);
mWindow.setScene(场景);
mWindow.show();
}
公共无效句柄(ActionEvent e){
按钮。添加(新按钮(“克隆”);
布局=新的VBox(10);
用于(按钮FTL:按钮){
layout.getChildren().add(buttonsFTL);
}
layout.getChildren().add(按钮);
场景=新场景(布局,300300);
mWindow.setScene(场景);
mWindow.show();
}
}

您需要展示一些努力来获得帮助,首先查看一些教程,例如,下载一个简单的教程。由于您对事件处理程序中舞台中显示的场景中的按钮单击作出反应,因此可以确保舞台的显示使
mWindow.show()
变得不必要。此外,请注意,您创建了完全相同的场景,但又多了一个按钮,这意味着无需重新创建场景,您只需执行
layout.getChildren().add(layout.getChildren().size()-1,新建按钮(“克隆”))
这意味着这可以在fxml控制器中的事件处理程序中轻松完成,访问
窗口或
场景是不必要的。非常感谢-我得到了它,所以我将我的主要草图保留在fxml中,如果需要添加一些,我只需使用纯Java的控制器进行操作,并将其添加到布局中,布局的所有css和规则都将应用于添加的元素。太好了,谢谢你的帮助。