JavaFX – как добавить массив MeshViews в группу или сцену

Обновление: я обновил свой код, чтобы прокрутить список представлений сетки и добавить каждое в группу, используя group.getChildren.add(meshview[i]), но все равно не отображается на экране. Спасибо.

Я пытаюсь добавить список массивов типа MeshView в сцену в графическом интерфейсе на основе JavaFx. Мне удалось заставить начальный пример работать, где был один MeshView, но теперь у меня есть случай, когда данные, считываемые из файла, приводят к массиву типа MeshView. Я не смог найти функцию типа «добавить» или «добавить все» в типе группы, чтобы позволить мне пройтись по всем элементам и добавить их, и я не смог заставить конструктор группы позволить мне добавить список в единицах в аргументах. Я использую группу, чтобы содержать их, потому что во всем графическом интерфейсе используется BorderLayout, определенный с использованием файла FXML. Итак, моя первоначальная версия добавляет представление сетки в группу вместе с некоторыми точечными источниками света, а затем эта группа добавляется в центр макета рамки с помощью метода set. Любая помощь будет оценена по достоинству. Спасибо.

Пс. Я думаю, что, возможно, я только что нашел ответ. Я забыл, что метод добавления находится в группе получения детей: group.getChildren().addAll(meshView, pointLight); как показывает строка выше из другого ответа. Но мне все равно было бы интересно услышать о лучших способах, потому что я все еще не понимаю, как бороться с ситаутией, когда у вас есть, скажем, 20 видов сетки, которые составляют часть, отображаемую на экране, и вы хотите объединить их и соответствующие источники света и т. д. и масштабировать поместиться в центре или borderlayout. Я предполагаю, что я могу сначала добавить все сетки, используя add, а затем добавить источники света, но не был уверен. Спасибо еще раз.


person user3064141    schedule 28.07.2018    source источник


Ответы (1)


Вы всегда можете добавить представления сетки к любому объекту типа Node, например Group или BorderLayout ex.

root.getChildren().add(meshView);

вы можете добавить как можно больше к этому root объекту и перевести meshView в сцену

meshView.setTranslateX(200);
meshView.setTranslateY(200);
meshView.setTranslateZ(200);

и установите конфигурацию камеры и точек освещения, а также добавьте их в сцену.

person Ahmed Emad    schedule 28.07.2018
comment
Если я добавляю более одного meshView в корень в вашем примере, используя, скажем, цикл, в котором я зацикливаюсь и добавляю все meshviews в массив списка MeshView, я бы сделал это, а затем выполнил какие-либо настройки для освещения, камеры и т. д. . Спасибо. - person user3064141; 29.07.2018
comment
свет и камера добавляются в сцену, а не в корень, так что это вне цикла - person Ahmed Emad; 29.07.2018