java - 如何获取场景上的元素JavaFX/动态添加对象到场景

标签 java javafx children scene

我有一个场景 - 我想提取该场景上的所有元素。

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

所以,为了更清楚地说明这一点 - 我有两个问题。

如何在按下按钮时动态添加矩形或圆形或任何与此相关的内容? 我如何提取场景中所有事物的列表。如果我添加矩形,我希望能够执行诸如 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);

最佳答案

考虑Pane#getChildren方法。你可以在列表中循环,如果找到一个Pane,你可以再次递归调用该方法。

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

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

关于java - 如何获取场景上的元素JavaFX/动态添加对象到场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26237972/

相关文章:

animation - JavaFX 停止时间轴

wpf - 保存 WPF StackPanel 子项

java - 从 org.w3c.dom.Node 获取 Xpath

java - 如何将图像添加到 JTable 单元格?

java - currentLine在java中充当关键字吗?

Java:希腊文件名问题(非拉丁文件名)

java - CheckBoxTableCell 更改监听器不工作

JavaFX ComboBox 选择错误

reactjs - React 的 Swiper js 无法正确渲染子项

javascript - 在 @ChildComponent Angular 中获取子组件