首页 > 解决方案 > 在一个场景中加载两个不同的 FXML 文件

问题描述

我有两个不同的 FXML 文件ViewOne.fxml -> ViewOneControllerViewTwo.fxml -> ViewTwoController.java

第一个视图只有 3 个文本字段,第二个视图应根据第一个视图的输入绘制一个圆圈。

我的问题是如何在同一个场景上加载两个 FXML 文件,然后使用这些事件画一个圆圈?

ViewOneController.java

public class ViewOneController {

    @FXML
    private HBox rootHBox;
    @FXML
    private TextField firstTextField;
    @FXML
    private TextField thirdTextField;
    @FXML
    private TextField secondTextField;

    @FXML
    void handleFirstTextField(ActionEvent event) {
    }

    @FXML
    void handleSecondTextField(ActionEvent event) {
    }

    @FXML
    void handleThirdTextField(ActionEvent event) {
    }
}

ViewOne.fxml

<HBox fx:id="rootHBox" maxHeight="-Infinity" maxWidth="-Infinity"   minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1"   fx:controller="exercise3Circles.ViewOneController">
   <children>
      <VBox prefHeight="400.0" prefWidth="243.0">
         <children>
            <AnchorPane prefHeight="401.0" prefWidth="243.0">
               <children>
                  <Label alignment="CENTER" layoutX="82.0" layoutY="44.0" text="View 1" textAlignment="CENTER">
                     <font>
                        <Font name="System Bold" size="20.0" />
                     </font>
                  </Label>
                  <Label layoutX="17.0" layoutY="120.0" text="X:" />
                  <TextField fx:id="firstTextField" layoutX="51.0" layoutY="115.0" onAction="#handleFirstTextField" />
                  <Label layoutX="17.0" layoutY="206.0" text="Y:" />
                  <TextField fx:id="thirdTextField" layoutX="51.0" layoutY="297.0" onAction="#handleThirdTextField" />
                  <Label layoutX="17.0" layoutY="302.0" text="R:" />
                  <TextField fx:id="secondTextField" layoutX="51.0" layoutY="201.0" onAction="#handleSecondTextField" />
               </children>
            </AnchorPane>
         </children>
      </VBox>
   </children>
</HBox>

ViewTwoController.java

public class ViewTwoController {

    @FXML
    private Label xLabel;

    @FXML
    private Label yLabel;

    @FXML
    private Label radiusLabel;
}

ViewTwo.fxml

<HBox alignment="CENTER_RIGHT" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="exercise3Circles.ViewTwoController">
   <children>
      <VBox alignment="CENTER_RIGHT" prefHeight="400.0" prefWidth="340.0">
         <children>
            <AnchorPane prefHeight="400.0" prefWidth="238.0">
           <children>
                  <Label layoutX="132.0" layoutY="44.0" text="View 2" textAlignment="CENTER">
                     <font>
                        <Font name="System Bold" size="20.0" />
                     </font>
                  </Label>
                  <Label layoutX="76.0" layoutY="356.0" text="X = 0" fx:id="xLabel" />
                  <Label fx:id="yLabel" layoutX="141.0" layoutY="356.0" text="Y = 0" />
                  <Label fx:id="radiusLabel" layoutX="208.0" layoutY="356.0" text="Radius = 0" />
               </children>
            </AnchorPane>
         </children>
      </VBox>
   </children>
</HBox>

标签: javajavafxscenebuilder

解决方案


推荐阅读