我有两个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;吨...
答案 0 :(得分:0)
在您的FXML中,pane2
是pane1
的孩子。因此,当您致电pane1.getChildren().clear()
时,您会完全从用户界面中删除pane2
。您需要pane1
和pane2
不要在它们之间建立父/子关系。
取决于您实际想要发生的事情,例如
<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>