Sergey Asked:2020-01-11 14:22:56 +0000 UTC2020-01-11 14:22:56 +0000 UTC 2020-01-11 14:22:56 +0000 UTC 在 JavaFX 中动态更新容器中的内容 772 假设我们有 100 个问题。每个问题都有不同数量的答案选项。所有这些问题都输入到数据库中,这标志着每个问题中有多少个这些答案选项。如何让容器的内容动态变化,例如问题中有3个答案选项,下一个问题会有4个,如何在不改变场景的情况下添加这个答案选项,不知何故做它来自控制器还是更改 fxml 文件? java 1 个回答 Voted Best Answer Александр Савостьянов 2020-01-11T16:02:01Z2020-01-11T16:02:01Z 创建元素的示例(不直接访问“容器”) import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { Button button = new Button("Start button"); button.setOnAction(new CreateAnswerHandler()); Pane container = new VBox(button); primaryStage.setScene(new Scene(container, 300, 500)); primaryStage.show(); } } 加工: import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Parent; import javafx.scene.control.Button; import javafx.scene.layout.Pane; public class CreateAnswerHandler implements EventHandler<ActionEvent> { public Button createAnswerButton() { Button button = new Button(String.valueOf(System.currentTimeMillis())); button.setOnAction(new CreateAnswerHandler()); return button; } @Override public void handle(ActionEvent event) { if ( event.getSource() instanceof Button ) { Button bSource = (Button) event.getSource(); Parent parent = bSource.getParent(); if ( parent != null && parent instanceof Pane ) { Pane pane = (Pane) parent; pane.getChildren().add(createAnswerButton()); } } } }
创建元素的示例(不直接访问“容器”)
加工: