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