Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
JavaFX.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
4.88 Mб
Скачать

3.2 Лабораторна робота № 2. Робота з медіа. Реалізація crud за допомогою jpa та TableView.

Мета роботи: Розширити можливості додатку, ввівши адміністрування користувачів та програвання медіа файлів. Ознайомившись з вбудованими можливостями JavaFX, навчитися розробляти інтерфейс користувача через програмний код без використання FXML, створювати обробники подій.

КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

Медіа-програвач

Медіа концепція JavaFX заснована на наступних класах:

  • Media — медіа-ресурс, що містить інформацію про медіа-файл, таку як джерело, дозвіл файлу, метадані;

  • MediaPlayer — ключовий компонент забезпечення управління для програвання медіа-файлу;

  • MediaView — об'єкт класу Node, що підтримує анімацію, прозорість та ефекти.

Клас MediaPlayer надає всі атрибути і функції, необхідні для управління програвання мультимедіа. Наприклад, можна встановити режим AUTO_PLAY, викликати безпосередньо функцію play(), або явно вказати кількість разів програвання медіа файлу. Змінна VOLUME та змінна BALANCE можуть бути використані для регулювання рівня гучності і настройки балансу відповідно. Діапазон гучності від 0 до 1.0 (максимальне значення). Баланс значень діапазону від -1.0 на ліву сторону, 0 в центрі і 1.0 справа.

Методи play(), stop(), і pause() управляють потоком відтворення мультимедіа. Крім того, існує зв’язка функцій для обробки певних події, коли програвач виконує такі дії:

  • буферизує дані;

  • досягає кінця медіа-файлу;

  • призупиняється, тому що дані не були отримані досить швидко, щоб продовжити програвати медіа-файл;

  • зустрічає будь-які помилки, визначені в класі MediaErrorEvent.

Табличне представлення данних

Деякі класи в JavaFX SDK API призначені для представлення даних в табличній формі. Найважливіші класи для створення таблиць в додатку JavaFX є TableView, TableColumn і TableCell. Заповнити таблицю можна із застосуванням спеціальної фабрики комірки. Описані класи забезпечують такі можливості:

  • сортування даних за стовпцями;

  • зміни розміру стовпців;

  • створення вкладених колонок;

  • автоматичне заповнення даними;

  • редагування вхідних даних та ін.

Для автоматичного заповнення необхідно, щоб були створені геттери та сеттери для кожного поля, потім потрібно створити ObservableList з необхідних для відображення записів та передати його у метод setItems, і до виклику цього методу встановити фабрику значень комірок (PropertyValueFactory) для колонки, вказавши ім’я поля, значення якого потрібно туди помістити.

ПРАКТИЧНА ЧАСТИНА

3.2.1 Вдосконалення коду додатка

Щоб кожного разу не писати багато коду для зміни сцени потрібно:

  1. Виділити окремий метод в класі JavafxApp:

private void replaceSceneContent(String fxml, int width, int height) throws Exception {

Parent page = (Parent) FXMLLoader.load(JavafxApp.class.getResource(fxml), null, new JavaFXBuilderFactory());

Scene scene = stage.getScene();

scene = new Scene(page, width, height);

scene.getStylesheets().add(JavafxApp.class.getResource("styles.css").toExternalForm());

stage.setScene(scene);

stage.sizeToScene();

stage.centerOnScreen();

}

  1. Створити у пакеті javafxapp пустий файл зі стилями styles.css.

  2. Зробити константами розміри вікна авторизації та основної програми:

private final int mainH = 600;

private final int mainW = 1000;

private final int loginH = 200;

private final int loginW = 500;

  1. Написати обгортку для виклику форми авторизації:

public void gotoLogin() {

try {

replaceSceneContent("login/Login.fxml", loginW, loginH);

} catch (Exception ex) {

Logger.getLogger(JavafxApp.class.getName()).log(Level.SEVERE, null, ex);

}

}

  1. Додати до класу поле private Stage stage і ініціалізувати його в методі:

@Override

public void start(Stage primaryStage) throws Exception {

stage = primaryStage;

stage.setTitle("JavaFX application");

gotoLogin();

primaryStage.show();

}

  1. Дописати метод виходу користувача із системи:

public void userLogout(){

this.loggedUser = null;

gotoLogin();

}

  1. Запустіть додаток і перевірте, чи все працює вірно.