Я пытаюсь создать несколько объектов, а затем поместить их в свою сцену. Для этого я использую цикл для создания нового объекта на каждой итерации и вставки его в список.
//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);
Как добавить список объектов в мою панель?
Благодарю!
Когда вы добавляете только один узел, вы должны предпочесть метод add(...)
над методом addAll(...)
:
playground.getChildren().add(robot);
ObservableList<Node>
наследует метод addAll(Collection<Node>)
из List<Node>
. Так что вы можете просто сделать
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)
заключается в том, что слушатели, зарегистрированные в списке children, будут уведомлены только один раз для addAll(...)
, но будут уведомлены один раз для каждого элемента, если вы добавите каждый элемент по одному. Таким образом, потенциально может быть повышение производительности с помощью addAll(...)
.
playground.getChildren().addAll(particles);
, (Для одного узла для меня имеет смысл использоватьadd
:playground.getChildren().add(robot);
)