我是JavaFX的新手。我想和我的场景互动 例如:当我点击一个按钮时,我在其中添加了一个新的Button,Textfield .. 但是,我搜索但没有找到满意的答案!
我的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>
我的控制员:
@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
}
答案 0 :(得分:4)
实现目标所需要的是将fx:id提供给场景中可以带孩子的容器。假设您有一个如下定义的堆栈窗格:
@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);}
我会将删除留给您,您需要做的就是想出一种方法来跟踪您创建的文本字段,然后当您想要删除一个时,您会执行类似{{1 }}
祝你好运!