Выберите объекты на панели JavaFX
Я создал приложение для рисования объектов на панели JavaFX (прямоугольник, пути, пользовательские элементы управления и т. Д.).
Теперь я хочу иметь возможность выбирать эти объекты для перемещения, копирования или группировки их. Панель javafx не имеет selectionModel по умолчанию, и я почему-то не нашел, как реализовать такую функцию.
Если у кого-то есть идея о том, как это сделать, я буду благодарен
1 ответ
Вам необходимо создать собственную модель выбора.
Сначала вы создаете класс SelectionModel. Во что вы положили набор. Чтобы поместить узлы в этот набор, необходимо создать обработчик мыши, который добавляет узлы в модель и удаляет их из модели в зависимости от нажатия клавиши shift /ctrl при нажатии на узлы.
Когда вы перемещаете выделение с помощью мыши, вы получаете позицию выбранного в данный момент узла и вместо перемещения одного узла в обработчике событий вы перемещаете все узлы списка в SelectionModel.
Чтобы сгруппировать их, вам нужно создать класс / коллекцию, в которой вы можете хранить различные выбранные вами узлы. Обычно группа является просто родительским узлом. Но это зависит от ваших требований.
Копировать / Вставить это другое дело. Вам нужно создать некую фабрику, которая создает и позиционирует новые узлы в зависимости от узлов в вашей модели выбора.
Вот пример с кодом для начала. Он показывает вам, как выбрать узлы.