在javafx中将节点添加到新父节点

时间:2015-07-01 06:15:24

标签: java javafx parent

我最近正在建立一个javafx程序,它将作为学校数据库。我创建了一个SceneManager类,它在运行时处理所有屏幕上的转换和其他gui任务。现在,我打算在每个可见窗口中添加一个后退按钮,以便用户可以随时返回上一个窗口。为此,我已将以下方法添加到SceneManager

public static void addBackButton(Pane from,Pane to){
    Node n1 = to.getChildren().get(0);
    to.getChildren().remove(n1);
    BorderPane fp = new BorderPane();
    fp.setLeft(createBackButton(from));
    fp.setCenter(n1);
    to.getChildren().add(0, fp);
}

public static Button createBackButton(Pane p){
    Button bk = new Button("",new ImageView("icons/appbar.arrow.left2.png"));
    bk.setOnAction((ActionEvent evt)->{
        swapToNext(p);
    });
    return bk;
}

但是上述方法无效。只显示没有节点0的按钮,但是节点0通常是我程序中的标题标签。我无法找到这个问题的任何通用解决方案,比如该方法对0中任何类型的节点都有效。任何想法?

1 个答案:

答案 0 :(得分:0)

编辑:我删除了我的旧答案,因为它不是你想要的。 编辑2:头痛的灵感。

enter image description here

红色是窗格。

在一个愉快的长周末之后,我意识到我们可以使用锚窗格。

    AnchorPane ap = new AnchorPane(p1,back);  //<--- order matters.
    AnchorPane.setBottomAnchor(back, 0.0);    //<--- 0.0 is the distance from that edge
    AnchorPane.setLeftAnchor(back, 0.0);
    AnchorPane.setLeftAnchor(p1, 0.0);        //<--- we do this to 'bind' the entire pane
    AnchorPane.setBottomAnchor(p1, 0.0);      //<--- to the anchorpane
    AnchorPane.setRightAnchor(p1, 0.0);       //<--- this ensures that it will
    AnchorPane.setTopAnchor(p1, 0.0);         //<--- even show behind the button 

p1是窗格,back是按钮本身,按钮包含链接 回到上一个窗格。

在这里,您只需要从该addBackButton函数返回锚定窗格。您最终会得到一个包含按钮和前一个窗格的Anchorpane。

我会得到更多的咖啡因;我希望我帮忙。 :)