如何在javafx中处理多个按钮

问题描述 投票:0回答:1

我的 fxml 文件上有多个按钮。通过单击任何按钮,将显示在

onAction
中定义的 fxml 表单。 问题是:

我是否应该加载所有表单,例如 foreach,当按钮单击正确的表单时,只显示或没有必要?

如果我应该加载所有表格,我应该在

initialize
函数中进行吗?

我是

JavaFx
的新手,不知道最好的方法是什么?

编辑

例如,当 btn1 单击时,将显示表单添加用户,当单击 btn2 时,将显示表单删除用户,...

问题是:

我是否应该加载添加用户表单并删除用户表单,...当程序启动时以及当例如 btn1 单击添加用户表单时是否显示?

<BorderPane fx:controller="com.project.controller.eventcontroller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <left>
      <VBox  prefHeight="400.0" prefWidth="110.0" style="-fx-background-color: #404040;" BorderPane.alignment="CENTER">
         <children>
            <Button fx:id="btn1" alignment="TOP_LEFT" mnemonicParsing="false" prefHeight="17.0" prefWidth="111.0" text="btn1" />
            <Button fx:id="btn2" alignment="TOP_LEFT" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="111.0" text="btn2">
               <VBox.margin>
                  <Insets top="12.0" />
               </VBox.margin>
            </Button>
            <Button fx:id="btn3" alignment="TOP_LEFT" layoutX="10.0" layoutY="47.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="111.0" text="btn3">
               <VBox.margin>
                  <Insets top="12.0" />
               </VBox.margin>
            </Button>
            <Button fx:id="btn4" alignment="TOP_LEFT" layoutX="10.0" layoutY="84.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="111.0" text="btn4">
               <VBox.margin>
                  <Insets top="12.0" />
               </VBox.margin>
            </Button>
         </children>
      </VBox>
   </left>
</BorderPane>

谢谢大家的帮助

java javafx fxml
1个回答
0
投票

我的建议是:

  1. 为每个按钮定义单独的操作处理程序
    edit()
    delete()
  2. 使用
    onAction
    注释将每个的
    @FXML
    处理程序注入到控制器代码中。
  3. 在 FXML 中为按钮定义相应的
    onAction=#edit
    onAction=#delete
    属性。
  4. 在每个操作处理程序中,加载并显示新的 FXML 以处理操作的 UI。

是的,您可以在其他地方预加载用于编辑和删除操作的 FXML,然后在执行编辑和删除操作时仅显示相应的节点,但我不建议您这样做。

© www.soinside.com 2019 - 2024. All rights reserved.