- •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.3.4 Створення анімації кнопок
Незмінні малюнки в ролі кнопок — це не є добрим рішенням для інтерфейсу користувачів, тому потрібно зробити їх більш інтерактивними за допомогою ефектів та анімації. Всі ці дії потрібно зробити в методі, який створює кнопки інтерфейсу — createButton з класу ButtonCreator:
public abstract class ButtonCreator {
private static final double SCALE = 1.2; // коеффіцієнт збільшення
private static final double DURATION = 300; // час анімації в мс
public static Node createButton(String iconPath, final Runnable action) {
final ImageView node = new ImageView(new Image(iconPath));
node.setFitWidth(100);
node.setPreserveRatio(true);
final ScaleTransition animationGrow = new ScaleTransition(Duration.millis(DURATION), node);
animationGrow.setToX(SCALE);
animationGrow.setToY(SCALE);
final ScaleTransition animationShrink = new ScaleTransition(Duration.millis(DURATION), node);
animationShrink.setToX(1);
animationShrink.setToY(1);
final Reflection effect = new Reflection();
node.setEffect(effect);
node.setOnMouseEntered(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
node.toFront();
animationShrink.stop();
animationGrow.playFromStart();
}
});
node.setOnMouseExited(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
animationGrow.stop();
animationShrink.playFromStart();
}
});
final ColorAdjust effectPressed = new ColorAdjust(0, 0, -0.5, 0);
node.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
action.run();
effect.setInput(effectPressed);
Timeline tl = new Timeline(new KeyFrame(Duration.millis(300), new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
effect.setInput(null);
}
}));
tl.play();
}
});
return node;
}
}
Отже тепер метод виконує такі дії:
Завантажує зображення кнопки;
Створює анімацію зростання зображення;
Створює анімацію зменшення зображення;
Додається ефект віддзеркалення;
Пов’язуються події вказівника миші зі збільшенням та зменшенням зображення;
При натисканні на зображення воно затемнюється на 300 мілісекунд.
Потрібно відмітити, що додавання ефектів до елементу, який вже має ефект (в даному випадку — віддзеркалення), потрібно робити через метод setInput.
Через те, що тепер елементи зростають при наведенні, потрібно збільшити ширину акордеону. Ширина зображень 100 пікселей, коефіцієнт зростання 1.2, тобто потрібно в методі getAccordion() взяти трохи більше, ніж 120:
accordion.setPrefWidth(130);
Запустивши додаток, можна подивитись на результат (рис. 3.28).
Рис. 3.28. Збільшена кнопка з віддзеркаленням
Практичне завдання
Додати до панелі інструментів і до акордеону кнопку зміни користувача (переходу до вікна авторизації).
Додати до LineChart третій графік.
Додати в кожній країні до BarChart власні популяційні прогнози на 2020 рік.
При наведенні на кнопку меню створити анімацію обертання навколо осі. Перед початком обертання прибрати ефект віддзеркалення, по закінченню обертання додати віддзеркалення.
Контрольні питання
Які класи реалізують веб-браузер?
Скільки типів графіків існує в JavaFX? Назвіть класи, які їх презентують.
З яких елементів створюється Accordion?
Які види створення анімації ви знаєте?
Які існують типи переходів (Transition)?
