在我的项目中,我需要根据点击的菜单从某些FXML文件中复制特定HBox的内容,并将其放在与主页内容相关的HBox中。
Bellow你可以看到项目的层次结构,而这个方法的目标是建立一个全局页面,只改变这个HBox的内容。主页和其他页面中的HBox具有ID“conteudo”。
我能够复制并粘贴内容,但只能进行一次。在调用clear()或removeAll()一次后,它就不再起作用了。也没有错误,我检查了“conteudo”在删除/清除它的孩子之后仍然存在,任何想法为什么它只发生一次?
注1:使用((HBox)fxmlAldeia.lookup(“#conteudo”))。getChildren()我得到了“conteudo”内容的访问权。
注2:getCenter没有帮助,因为我只得到了中心的一部分。
注3:我无法使用java构建“conteudo”的内容。我使用Scenebuilder来加速,这就是为什么我需要从FXML加载它。
层次:
Código
package simulador;
public class Aldeia extends Application {
private static Scene sceneAldeia;
protected static BorderPane fxmlAldeia;
protected static BorderPane fxmlEdfPrincipal;
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("TW Fake");
fxmlAldeia = FXMLLoader.load(getClass().getResource("Aldeia.fxml"));
fxmlEdfPrincipal = FXMLLoader.load(getClass().getResource("EdfPrincipal.fxml"));
sceneAldeia = new Scene(fxmlAldeia);
primaryStage.setScene(sceneAldeia);
primaryStage.show();
}
public static void changeScreen(String src) throws IOException {
// limpa conteúdo
((HBox) fxmlAldeia.lookup("#conteudo")).getChildren().clear();
switch (src) {
case "aldeia":
((HBox) fxmlAldeia.lookup("#conteudo")).getChildren()
.addAll(((HBox) fxmlAldeia.lookup("#conteudo")).getChildren());
break;
case "edfPrincipal":
((HBox) fxmlAldeia.lookup("#conteudo")).getChildren()
.addAll(((HBox) fxmlEdfPrincipal.lookup("#conteudo")).getChildren());
break;
}
}
public static void main(String[] args) {
launch(args);
}
}