JavaFX за разработка на потребителски интерфейси (GUI)

Плъзгане и пускане в JavaFX – ръководство стъпка по стъпка за начинаещи

Всички видеоклипове от урока JavaFX за разработка на потребителски интерфейс (GUI)

Задавал ли си се някога как Drag и Drop се реализира в графичен интерфейс? Тази концепция е не само разпространена в съвременните приложения, но също така е от голямо значение за потребителското преживяване. В това ръководство ще ти покажа как да имаш Drag и Drop в JavaFX, като създадем две квадратчета, които можеш да преместваш. Това ще бъде стъпка-по-стъпка ръководство, така че да можеш лесно да проследиш всички необходими стъпки.

Най-важни прозрения

  • Drag и Drop дава възможност на потребителите лесно да преместят обекти.
  • Имплементирането на Drag и Drop в JavaFX е лесно чрез обработчици на събития и лямбда изрази.
  • Откритие на сблъсъци е от съществено значение, за да се определи дали обектът е поставен в определена зона.

Ръководство стъпка по стъпка

1. Настройка на проекта

Първо, създай нов JavaFX проект в твоята среда за разработка. Увери се, че всички необходими библиотеки са интегрирани. Започваме с основната настройка на приложението ти, като създадеш главен клас.

Драг и дроп в JavaFX – Стъпка по стъпка ръководство за начинаещи

2. Създаване на потребителски интерфейс

За нашия пример ще създадем две квадратчета: едно малко, което искаме да преместим и едно голямо, което служи като цел. Кодът за това изглежда по следния начин:

Rectangle recToMove = new Rectangle(50, 50, 50, 50); // малко квадратче
Rectangle recTarget = new Rectangle(150, 150, 100, 100); // голямо квадратче

При създаването на квадратчетата определяш тяхната позиция и размер.

Драг и дроп в JavaFX – Стъпка по стъпка ръководство за начинаещи

3. Определяне на позиция и сцена

Следващата стъпка е да те нуждаеш от променливи, за да запазиш позицията на твоите обекти. Определи X и Y координатите на сцената. Те ще се използват по-късно, за да проследят движението по време на процеса на Drag-and-Drop.

double mainX, mainY; 

4. Добавяне на обработчици на събития

Следващата стъпка е да добавиш обработчици на събития, които ще позволят функционалността на Drag-and-Drop. Започваме с обработчика за натискане на мишката.

recToMove.setOnMousePressed(event -> { mainX = event.getSceneX(); mainY = event.getSceneY();
});

Тук запазваш текущата позиция на мишката, когато е натискане на бутона.

5. Имплементиране на обработчик за влачене

За фазата на влачене използваме друг обработчик на събития, който ти позволява да преместваш квадратчето, докато държиш натиснат мишката.

При това обновяваш позицията на квадратчето на базата на текущото движение на мишката.

6. Пускане на бутона на мишката

За да вземеш предвид пускането на бутона на мишката, добави допълнителен обработчик. Този променя цвета на квадратчето и проверява дали е поставено в определена целева позиция.

recToMove.setOnMouseReleased(event -> { // Нулиране на цвета recToMove.setFill(Color.BLACK); checkBounce(recToMove);
});

7. Откриване на сблъсъци

За да провериш дали преместеното квадратче е поставено в целевото квадратче, имплементираш метод на име checkBounce.

Тук откриваш дали двете квадратчета се припокриват и променяш цвета на целевото квадратче съответно.

Плъзгане и пускане в JavaFX – стъпка по стъпка ръководство за начинаещи

8. Добавяне на обектите към сцената

Накрая добавяш създадените квадратчета към сцената си и задаваш сцената на сцената.

Резюме – Drag и Drop с JavaFX

С това ръководство научи как да имплементираш просто Drag-and-Drop система в JavaFX. Запознал си се с основите на откривањето на сблъсъци, както и с обработката на мишеви събития. Функцията за Drag и Drop е от съществено значение за удобството на приложенията ти.

Често задавани въпроси

Как да имплементирам Drag и Drop в JavaFX?Въвеждаш събития от бутона на мишката, за да проследяваш позициите и да преместваш обекта.

Какво е откритие на сблъсъци в този контекст?Става въпрос за проверка дали две обекти се припокриват и как това се представя визуално.

Мога ли да използвам Drag и Drop за други обекти?Да, концепцията е гъвкава и може да бъде приложена на различни JavaFX обекти.