如何在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

回到顶部