Выберите объекты на панели JavaFX

Я создал приложение для рисования объектов на панели JavaFX (прямоугольник, пути, пользовательские элементы управления и т. Д.).

Теперь я хочу иметь возможность выбирать эти объекты для перемещения, копирования или группировки их. Панель javafx не имеет selectionModel по умолчанию, и я почему-то не нашел, как реализовать такую ​​функцию.

Если у кого-то есть идея о том, как это сделать, я буду благодарен

1 ответ

Вам необходимо создать собственную модель выбора.

Сначала вы создаете класс SelectionModel. Во что вы положили набор. Чтобы поместить узлы в этот набор, необходимо создать обработчик мыши, который добавляет узлы в модель и удаляет их из модели в зависимости от нажатия клавиши shift /ctrl при нажатии на узлы.

Когда вы перемещаете выделение с помощью мыши, вы получаете позицию выбранного в данный момент узла и вместо перемещения одного узла в обработчике событий вы перемещаете все узлы списка в SelectionModel.

Чтобы сгруппировать их, вам нужно создать класс / коллекцию, в которой вы можете хранить различные выбранные вами узлы. Обычно группа является просто родительским узлом. Но это зависит от ваших требований.

Копировать / Вставить это другое дело. Вам нужно создать некую фабрику, которая создает и позиционирует новые узлы в зависимости от узлов в вашей модели выбора.

Вот пример с кодом для начала. Он показывает вам, как выбрать узлы.

Другие вопросы по тегам