gpt4 book ai didi

java - 将 TextField 动态添加到 javafx 场景

转载 作者:行者123 更新时间:2023-11-29 03:12:17 25 4
gpt4 key购买 nike

我是 JavaFX 的新手。我想与我的场景互动。
例如:当我点击一个按钮时,我在其中添加了一个新的按钮,文本字段..。然而,我搜索却没有找到满意的答案!

我的 fxml 文件:

 <children>
<Label layoutX="59.0" layoutY="83.0" text="message Type"/>
<Button layoutX="157.0" layoutY="354.0" mnemonicParsing="false" onAction="#goBack" text="Revenir à la page precedente" />
<Button layoutX="348.0" layoutY="354.0" mnemonicParsing="false" onAction="#goToDash" text="Go To Screen3" />
<Button layoutX="375.0" layoutY="84.0" mnemonicParsing="false" onAction="#AddTextfiled" prefHeight="25.0" prefWidth="28.0" text="+" />
<Button layoutX="375.0" layoutY="84.0" mnemonicParsing="false" onAction="#RemoveTextfield" prefHeight="25.0" prefWidth="28.0" text="-" />
<TextField layoutX="212.0" layoutY="84.0" />
</children>

我的 Controller :

@FXML
private void goBack1(ActionEvent event){
myController.setScreen(ScreensFramework.screenPreviousID);
}

@FXML
private void goToDash(ActionEvent event){
myController.setScreen(ScreensFramework.screenDashID);
}
@FXML
private void AddTextField(ActionEvent event) {
//add textfield on click}

@FXML
private void RemoveTextField(ActionEvent event) {
//remove textfield on click

}

最佳答案

要实现您的目标,您需要为场景中可以容纳 child 的容器提供 fx:id。假设您有一个定义如下的堆栈 Pane :

@FXML
private VBox pane_main_grid;

其中 pane_main_grid 在 .fxml 文件中使用 fx:id 定义。伟大的。

现在,使用您前面提到的代码。

@FXML
private void AddTextField(ActionEvent event) {
TextField newField = new TextField();
pane_main_grid.getChildren().add(newField);}

我会把删除留给你,你需要做的就是想出一种方法来跟踪你创建的文本字段,然后当你想删除一个时,你可以做 pane_main_grid.remove({要删除的文本字段的索引});

祝你好运!

关于java - 将 TextField 动态添加到 javafx 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28670811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com