我最近正在建立一个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中任何类型的节点都有效。任何想法?
答案 0 :(得分:0)
编辑:我删除了我的旧答案,因为它不是你想要的。 编辑2:头痛的灵感。
红色是窗格。
在一个愉快的长周末之后,我意识到我们可以使用锚窗格。
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。
我会得到更多的咖啡因;我希望我帮忙。 :)