如何在JavaFX中将列表中的多个子项添加到窗格中

如何在JavaFX中将列表中的多个子项添加到窗格中,java,javafx,Java,Javafx,我正在尝试创建多个对象,然后将它们放入场景中。为此,我使用循环在每次迭代中创建新对象,并将其插入列表中 //single object robot = new Circle(25, Color.BLUE); robot.relocate(getRandomCoordinates(600), getRandomCoordinates(400)); ArrayList<Circle> particles = new ArrayList<Circle>(); //multi

我正在尝试创建多个对象,然后将它们放入场景中。为此,我使用循环在每次迭代中创建新对象,并将其插入列表中

//single object
robot = new Circle(25, Color.BLUE);
robot.relocate(getRandomCoordinates(600), getRandomCoordinates(400));

ArrayList<Circle> particles = new ArrayList<Circle>();

//multiple objects in list particles
for(int i = 0; i < 10; i++)
{
  particles.add(new Circle(10, Color.GREEN));
}
如何将对象列表添加到我的窗格-游乐场


谢谢

当您仅添加单个节点时,您应该更喜欢添加。。。方法通过addAll。。。方法:

ObservableList从列表继承方法。所以你可以这么做

playground.getChildren().addAll(particles);
注意,还有第二个方法叫做addAll。。。这是一个varargs方法,获取节点参数列表。这是特定于ObservableList的,而不仅仅是列表

当然,您也可以一次添加一个元素:

for (Node node : particles) {
    playground.getChildren().add(node);
}
或者,如果您更喜欢Java 8方法:

particles.forEach(playground.getChildren()::add);

这种方法与使用addAllparticles的区别在于,对于addAll…,注册到子列表的侦听器只会收到一次通知,但是如果每次添加一个元素,则每个元素都会收到一次通知。因此,当您只添加一个节点时,使用addAll…

可能会有性能增强,您应该更喜欢添加。。。方法通过addAll。。。方法:

ObservableList从列表继承方法。所以你可以这么做

playground.getChildren().addAll(particles);
注意,还有第二个方法叫做addAll。。。这是一个varargs方法,获取节点参数列表。这是特定于ObservableList的,而不仅仅是列表

当然,您也可以一次添加一个元素:

for (Node node : particles) {
    playground.getChildren().add(node);
}
或者,如果您更喜欢Java 8方法:

particles.forEach(playground.getChildren()::add);

这种方法与使用addAllparticles的区别在于,对于addAll…,注册到子列表的侦听器只会收到一次通知,但是如果每次添加一个元素,则每个元素都会收到一次通知。因此,使用addAll可能会有性能增强…

我不确定我是否理解这个问题,但如果我按照您所说的那样解释它,您只需执行playder.getChildren.addAllparticles;。对于单个节点,仅使用add:playway.getChildren.addrobot;对我来说更有意义;。是的,这很有效。谢谢,我不确定我是否理解这个问题,但如果我按照您所说的那样理解它,您只需要执行playder.getChildren.addAllparticles;。对于单个节点,仅使用add:playway.getChildren.addrobot;对我来说更有意义;。是的,这很有效。谢谢