我正在尝试创建多个对象,然后将它们放入我的场景中。为此,我使用循环在每次迭代中创建新对象并将其插入到列表中。
//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));
}
现在主要问题是如何将对象列表插入到我的窗格中。对于我使用的单个对象:
playground.getChildren().addAll(robot);
如何将对象列表添加到我的Pane - playground?
谢谢!
答案 0 :(得分:4)
如果只添加单个节点,则应优先采用add(...)
方法而不是addAll(...)
方法:
playground.getChildren().add(robot);
ObservableList<Node>
继承了List<Node>
的{{3}}方法。所以你可以做到
playground.getChildren().addAll(particles);
请注意,第二种方法称为addAll(...)
,它是一种varargs方法,采用Node
参数列表。这特定于ObservableList
(不仅仅是List
)。
当然,您也可以一次添加一个元素:
for (Node node : particles) {
playground.getChildren().add(node);
}
或者,如果您更喜欢Java 8方法:
particles.forEach(playground.getChildren()::add);
此方法与使用addAll(particles)
之间的区别在于,使用子列表注册的侦听器将仅针对addAll(...)
通知一次,但如果您在每个元素添加一个元素,则会通知每个元素一次一时间因此,使用addAll(...)
可能会提高性能。