如何在同一时间加载2个fxml文件

时间:2015-11-08 15:21:24

标签: java javafx fxml

我有两个javafx窗格," pane1"和" pane2" (" pane1"是" pane2")的第一个父母。如何加载两个fxml文件,比如" fxml1.fxml"和" fxml2.fxml"在同一时间,加载" fxml1.fxml"在" pane1"和" fxml2.fxml"在" pane2"在同一时间。

这是我尝试过的。但是这只加载了fxml1.fxml文件,但是没有加载fxml2.fxml文件......

public class HostelController implements Initializable {
    @FXML
    private Button hostlersBut;

    @Override
    public void initialize(URL url, ResourceBundle rb) {

    }

    @FXML
    private void hostlersClkHostel(ActionEvent event) {
        try {
            pane1.getChildren().clear();
            pane1.getChildren().add(FXMLLoader.load(getClass().getResource("fxml1.fxml")));

            pane2.getChildren().clear();
            pane2.getChildren().add(FXMLLoader.load(getClass().getResource("fxml2.fxml")));
        } catch (IOException ex) {
            System.out.print(ex);
        }
    }
}

这是当前视图的fxml文件

<AnchorPane id="AnchorPane" fx:id="anchorPane" prefHeight="508.0" prefWidth="968.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controllers.HostelController">
    <children>
      <Pane fx:id="pane1" prefHeight="538.0" prefWidth="1014.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0">
         <children>
            <Button fx:id="hostelersBut" layoutX="7.0" layoutY="100.0" onAction="#hostelAction" prefHeight="30.0" prefWidth="150.0" text="Hostel"> </Button>
            <Pane fx:id="pane2" layoutX="166.0" prefHeight="538.0" prefWidth="846.0">
               <children>
               </children>
            </Pane>
         </children>
      </Pane>
    </children>
</AnchorPane>

这是一个最小的代码,还有一些其他按钮,因此我无法使用initialize方法在加载时初始化一个窗格...正如我所说,只加载了第一个fxml文件,第二个没有& #39;吨...

1 个答案:

答案 0 :(得分:0)

在您的FXML中,pane2pane1的孩子。因此,当您致电pane1.getChildren().clear()时,您会完全从用户界面中删除pane2。您需要pane1pane2不要在它们之间建立父/子关系。

取决于您实际想要发生的事情,例如

<AnchorPane id="AnchorPane" fx:id="anchorPane" prefHeight="508.0" prefWidth="968.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controllers.HostelController">
    <children>
      <Pane fx:id="pane1" prefHeight="538.0" prefWidth="1014.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0" />

      <Button fx:id="hostelersBut" layoutX="7.0" layoutY="100.0" onAction="#hostelAction" prefHeight="30.0" prefWidth="150.0" text="Hostel"> </Button>
      <Pane fx:id="pane2" layoutX="166.0" prefHeight="538.0" prefWidth="846.0" />
    </children>
</AnchorPane>