- •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.2.2 Створення інтерфейсу додатка
Інтерфейс буде розроблятися для таких можливостей:
Веб-браузер;
Медіа програвач;
Побудова графіків;
Редагування користувачів;
Стилювання.
В клас JavafxApp потрібно додати наступний код:
private StackPane view;
private MediaPlayer mediaPlayer;
…
public void gotoMain() {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, mainW, mainH, Color.LIGHTBLUE);
scene.getStylesheets().add(JavafxApp.class.getResource("styles.css").toExternalForm());
stage.setScene(scene);
stage.sizeToScene();
stage.centerOnScreen();
view = new StackPane();
root.setCenter(view);
HBox taskbar = new HBox(10);
taskbar.setPadding(new Insets(10, 30, 20, 30));
taskbar.setPrefHeight(150);
taskbar.setAlignment(Pos.CENTER);
root.setBottom(taskbar);
for (int i = 0; i < 5; i++) {
ImageView node = new ImageView(new Image(getClass().getResource("media/images/icon-" + i + ".png").toString()));
node.setFitWidth(100);
node.setPreserveRatio(true);
taskbar.getChildren().add(node);
}
}
private void changeView(Node node) {
view.getChildren().clear();
mediaPlayer.stop();
view.getChildren().add(node);
}
В методі gotoMain встановлюються нові розміри сцени, вікно позиціонується у центр екрану та в циклі завантажуються малюнки, які будуть слугувати кнопками. Отже потрібно створити ієрархію папок media/images та помістити малюнки туди, давши кожному назву icon-N, де N — порядковий номер.
За допомогою Insets розміщується taskbar. Insets - це клас набору відступів, його конструктор: public Insets(double top, double right, double bottom, double left). view — це контейнер, в якому будуть виконуватися всі заплановані функції додатку.
Замість виведення повідомлення про успішну авторизацію потрібно поставити перехід в головне меню (JavafxApp.getInstance().gotoMain();) і запустити додаток (рис. 3.8).
Рис. 3.8. Вигляд головного меню додатка
Але через те, що в майбутньому знадобиться прикрашати додаток, буде більш зручно використовувати окрему функцію, яка поки що буде тільки завантажувати зображення. Для цього потрібно створити окремий пакет utils, а в ньому абстрактний клас ButtonCreator:
public abstract class ButtonCreator {
public static Node createButton(String iconPath, final Runnable action) {
final ImageView node = new ImageView(new Image(iconPath));
node.setFitWidth(100);
node.setPreserveRatio(true);
return node;
}
node.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
action.run();
}
});
}
У другому параметрі виклику методу, в Runnable action буде передаватися реакція на подію натискання на клавішу.
Тепер цикл завантаження зображень виглядає наступним чином:
for (int i = 0; i < 7; i++) {
taskbar.getChildren().add(ButtonCreator.createButton(getClass().getResource("media/images/icon-" + i + ".png").toString(), null));
}
