从FXML复制HBox内容时出现问题

时间:2018-03-08 21:01:37

标签: javafx fxml

在我的项目中,我需要根据点击的菜单从某些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加载它。

层次:

Hierarchy

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);
    }
}

0 个答案:

没有答案