gpt4 book ai didi

nodes - 如何确定 JavaFX 中 Pane 的分层

转载 作者:行者123 更新时间:2023-12-05 01:47:19 24 4
gpt4 key购买 nike

我想保留一个工作区,然后在用户第二次打开窗口时恢复它。

例如我有以下内容:

//Create the workspace there the panes will live
Pane workspace = new Pane();
//Create the layers - assume there is code to allow these to be dragged and moved
Pane layer1 = new Pane();
Pane layer2 = new Pane();
Pane layer3 = new Pane();

workspace.getChildren().addAll(layer1, layer2, layer3);

我知道我可以通过执行以下操作来选择哪个图层在最上面:

layer2.toFront();

但是我似乎无法找到确定当前哪一层位于顶部的能力。

layer1.setOnToFront(event -> {});
layer1.setOnToBack(event -> {});

甚至

boolean onTop = layer1.isOnTop();

有没有办法确定节点的位置,以便在工作区打开时,可以再次使前面板可见?

谢谢!

最佳答案

Pane 中节点的渲染顺序(从后到前) , 基于 Pane 子列表中节点的索引。

因此您可以使用以下函数确定给定节点的索引:

int idx = pane.getChildren().indexOf(layerX);

您可以使用以下方法确定顶级节点:

Node top = 
pane.getChildren.size() > 0
? pane.getChildren().get(pane.getChildren().size() - 1)
: null;

您可以使用 ListChangeListener 监听节点顺序的变化:

pane.getChildren().addListener(new ListChangeListener<Item>() {
public void onChanged(Change<Item> c) {
while (c.next()) {
// process the next change.
}
}
});

关于nodes - 如何确定 JavaFX 中 Pane 的分层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com