如何在JavaFX中获得父节点中的所有节点?
在C#中,我发现了一种非常可爱的方法,该方法使您可以从指定控件中获取所有后代和所有THEIR后代。
我正在寻找JavaFX的类似方法。
我看到Parent
了我要使用的类,因为它是派生所有带有孩子的Node类的类。
到目前为止,这是我所拥有的(并且我还没有在Google上通过“ JavaFX从场景中获取所有节点”之类的搜索真正找到任何东西):
public static ArrayList<Node> GetAllNodes(Parent root){ ArrayList<Node> Descendents = new ArrayList<>();
root.getChildrenUnmodifiable().stream().forEach(N -> {
if (!Descendents.contains(N)) Descendents.add(N);
if (N.getClass() == Parent.class) Descendents.addAll(
GetAllNodes((Parent)N)
);
});
}
那么,如何确定N是否是父母(或从父母继承)呢?我说的对吗?它似乎不起作用…它是从根(父)节点中获取所有节点,而不是从其中有子节点的节点中获取。我觉得这也许可以解决这个问题,但我只是在问一个问题……错了。我该怎么做呢?
回答:
public static ArrayList<Node> getAllNodes(Parent root) { ArrayList<Node> nodes = new ArrayList<Node>();
addAllDescendents(root, nodes);
return nodes;
}
private static void addAllDescendents(Parent parent, ArrayList<Node> nodes) {
for (Node node : parent.getChildrenUnmodifiable()) {
nodes.add(node);
if (node instanceof Parent)
addAllDescendents((Parent)node, nodes);
}
}
以上是 如何在JavaFX中获得父节点中的所有节点? 的全部内容, 来源链接: utcz.com/qa/428756.html