如何获取场景中的元素JavaFX/将对象动态添加到场景中

如何获取场景中的元素JavaFX/将对象动态添加到场景中,java,javafx,children,scene,Java,Javafx,Children,Scene,我有一个场景——我想把场景中的所有元素都拉出来 基本上,这就是我试图创建的:一个顶部有一个按钮的窗口,单击该窗口时,将在屏幕上“生成”一个新块,该块可以通过其他方式拖动/交互。我已经在代码中添加了块。但是我想让它成为动态的,为此,我需要能够循环遍历场景中的所有对象,并且我需要知道如何将对象动态添加到场景中 所以,为了让这更清楚-我有两个问题 如何在按下按钮时动态添加矩形、圆形或其他相关内容? 我该如何提取现场所有事物的列表。如果我添加矩形,我希望能够执行类似于scene.getElements(

我有一个场景——我想把场景中的所有元素都拉出来

基本上,这就是我试图创建的:一个顶部有一个按钮的窗口,单击该窗口时,将在屏幕上“生成”一个新块,该块可以通过其他方式拖动/交互。我已经在代码中添加了块。但是我想让它成为动态的,为此,我需要能够循环遍历场景中的所有对象,并且我需要知道如何将对象动态添加到场景中

所以,为了让这更清楚-我有两个问题

如何在按下按钮时动态添加矩形、圆形或其他相关内容? 我该如何提取现场所有事物的列表。如果我添加矩形,我希望能够执行类似于scene.getElements()的操作,并让它返回场景中的元素列表,这样我就可以遍历它们并检查它们的相关内容

我的代码:

final Circle circle = new Circle(200, 150, 50, Color.BLUEVIOLET);
final Rectangle rectangle = new Rectangle();
rectangle.setX(50);
rectangle.setY(50);
rectangle.setWidth(200);
rectangle.setHeight(100);
rectangle.setFill(Color.CORNFLOWERBLUE);
final Circle pizzaCrust = new Circle(SCENE_WIDTH/2, SCENE_HEIGHT/2, SCENE_WIDTH/2-150, Color.TAN);
final Circle pizzaInside = new Circle(SCENE_WIDTH/2, SCENE_HEIGHT/2, SCENE_WIDTH/2-160, Color.LIGHTYELLOW);
final Group group = new Group(pizzaCrust, pizzaInside, rectangle, circle);
final Scene scene = new Scene(group, SCENE_WIDTH, SCENE_HEIGHT, Color.WHITE);
考虑一下这个方法。可以在列表中循环,如果找到一个窗格,可以再次递归调用该方法

要小心,因为不是JavaFX元素是Pane的子类


还请注意,getChildren返回一个ObservableList,因此如果向其中添加元素,它将显示在舞台上。

Ok。我的另一个问题呢?在我已经创建了场景之后,如何向组中动态添加更多的子对象?您只需将其添加到通过getChildren方法获取的列表中即可。Ok。这将把它添加到场景中,而无需我更新任何其他内容?是的,因为JavaFX使用可观察的集合。如果发生任何修改,集合侦听器将调用JavaFX重新绘制场景。最后一个问题-是否有任何方法可以获取添加到场景中的组?因此,如果我将一个场景传递给另一个方法,我可以通过执行scene.getGroups()之类的操作来获取组。还是我也要和大家一起去?