
- •3.1 Лабораторна робота № 1. Створення JavaFx додатку. Авторизація користувачів.
- •Java Persistence api
- •3.1.1. Необхідне програмне забезпечення
- •3.1.2. Налаштування проекту JavaFx-додатку
- •3.1.3. Підключення бази даних
- •3.1.4. Створення моделей та їх маппінг за допомогою jpa
- •3.1.5. Створення допоміжного класу для роботи з моделями
- •3.1.6. Впровадження логіки авторизації користувача
- •3.2 Лабораторна робота № 2. Робота з медіа. Реалізація crud за допомогою jpa та TableView.
- •Медіа-програвач
- •Табличне представлення данних
- •3.2.1 Вдосконалення коду додатка
- •3.2.2 Створення інтерфейсу додатка
- •3.2.3 Створення медіа програвача
- •3.2.4 Впровадження можливості адміністрування користувачів
- •3.3 Лабораторна робота № 3. Використання вбудованого браузеру, будування графіків та створення анімації.
- •Акордеон
- •Анімація у JavaFx
- •Графіки
- •3.3.1 Інтегрування веб-браузеру до проекту
- •3.3.2 Створення графіків
- •3.3.3 Використання елементу акордіон для створення альтернативного варіанту панелі інструментів
- •3.3.4 Створення анімації кнопок
- •3.4 Лабораторна робота № 4. Технологія drag-and-drop у JavaFx-додатках. Використання стилів.
- •Drag-and-Drop
- •Стилювання додатку за допомогою css
- •3.4.1 Drag-and-Drop
- •3.4.2 Додавання можливості стилювання додатку
- •3.4.3 Створення стилів
- •3.5 Лабораторна робота № 5. Робота з JavaFx Scene Builder. 3-d трансформація у JavaFx. Розгортання додатку.
- •JavaFx Scene Builder
- •Трансформація у JavaFx
- •Розгортання JavaFx додатків
- •3.5.1 JavaFx Scene Builder
- •3.5.2 Створення логіки додатка
- •3.5.3 Розгортання додатка
3.4 Лабораторна робота № 4. Технологія drag-and-drop у JavaFx-додатках. Використання стилів.
Мета роботи: Ознайомитись з технологією Drag-and-Drop в JavaFX, навчитися створювати файли стилів та змінювати зовнішній вигляд додатку.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Drag-and-Drop
Drag-and-Drop — це дуже комфортне та інтуітивне для користувача рішення, яке можна впровадити для реалізації певних задач. В JavaFX є можливість використання цієї технології не тільки в межах одного додатку, але і обмінюватися інформацією з іншими додатками JavaFX, додатками Java Client та з програмами сторонніх розробників, таких як Windows Explorer.
В Drag-and-Drop є два поняття — target (ціль) та source (джерело). Тобто target — це куди «кидають», а source — «що кидають». Ціллю та джерелом можуть бути Nodes і Scenes.
Данні, які переносяться, використовують dragboard, що має такий же самий інтерфейс як і clipboard, тільки використовується для передачі даних при Drag-and-Drop. В ролі даних можуть виступати: текст, зображення, URL, файли, рядки, байти. Клас javafx.scene.input.DragEvent є базовим класом для впровадження Drag-and-Drop. Також існує декілька типів передачі даних: COPY, MOVE, LINK.
Процес Drag-and-Drop може починатися викликом методу startDragAndDrop в обробнику події DRAG_DETECTED в джерелі:
final Text source = new Text(50, 100, "DRAG ME");
final Text target = new Text(300, 100, "DROP HERE");
source.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
/* drag was detected, start a drag-and-drop gesture*/
/* allow any transfer mode */
Dragboard db = source.startDragAndDrop(TransferMode.ANY);
/* Put a string on a dragboard */
ClipboardContent content = new ClipboardContent();
content.putString(source.getText());
db.setContent(content);
event.consume();
}
});
За допомогою подій DRAG_OVER, DRAG_ENTERED, DRAG_EXITED можна кастомізувати момент знаходження джерел над ціллю:
target.setOnDragEntered(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
/* the drag-and-drop gesture entered the target */
/* show to the user that it is an actual gesture target */
if (event.getGestureSource() != target &&
event.getDragboard().hasString()) {
target.setFill(Color.GREEN);
}
event.consume();
}
});
target.setOnDragExited(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
/* mouse moved away, remove the graphical cues */
target.setFill(Color.BLACK);
event.consume();
}
});
Подія DRAG_DROPPED сигналізує, що користувач переніс джерело до цілі. Ця подія відноситься до цілі, на відміну від описаних вище. Щоб завершити процес Drag-and-Drop потрібно викликати метод setDropCompleted(Boolean):
target.setOnDragDropped(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
/* data dropped */
/* if there is a string data on dragboard, read it and use it */
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasString()) {
target.setText(db.getString());
success = true;
}
/* let the source know whether the string was successfully
* transferred and used */
event.setDropCompleted(success);
event.consume();
}
});
По закінченню цієї події відбувається остання подія — DRAG_DONE, яка інформує джерело про результат перенесення, отже з ним можна зробити необхідні дії:
source.setOnDragDone(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
/* the drag and drop gesture ended */
/* if the data was successfully moved, clear it */
if (event.getTransferMode() == TransferMode.MOVE) {
source.setText("");
}
event.consume();
}
});