JavaFX
JavaFX — це бібліотека (навіть фреймворк), розроблена Oracle як окремий проєкт (починаючи з Java 11) для легкого створення доволі гарного та сучасного, функціонального GUI (графічного інтерфейсу користувача). Елементи інтерфейсу (кнопки, текстові поля, повзунки тощо) називаються контролами, або віджетами. Окрім них, в JavaFX можна малювати примітивні фігури (квадрат, круг тощо), або навіть 3D графіку. Звичайно, є й технічні можливості, такі як зміна курсору, діалоги для вибору файлів, створення і дизайн вікон програми та багато іншого.
Бібліотека складається з модулів, що описані нижче. Залежно від їх використання, необхідно дописувати їх через кому в --add-modules=
.
javafx.controls
-> Графічні контроли (основний модуль)javafx.fxml
-> Для роботи з FXML файламиjavafx.media
-> Відео й аудіо плеєриjavafx.web
-> Вбудований браузер на базі WebKitjavafx.swing
-> Для інтеграції JavaFX зі Swing
Початок роботи
Фреймворком (англ. фундамент) називається бібліотека, на основі якої будують програми. До таких відноситься й JavaFX, тому основний клас кожної програми (Main) на ньому має наслідувати клас javafx.application.Application
. У методі main(String[] args)
потрібно викликати лише один метод Application.launch(String[] args)
, який зробить всю складну роботу щодо створення вікна та запуску нового потоку програми з базовими налаштуваннями, тобто підготує програму. Для самого коду є три методи (в порядку їх виконання):
init()
, у якому відбувається ініціалізаціяstart(Stage stage)
, у якому пишуть майже весь (або весь) кодstop()
, у якому роблять “очистку”, завершальні дії за необхідності
Далі потрібно розібратись із структурою графічної програми: як видно на зображенні, Stage
— це вікно програми (у даному випадку одне основне вікно), а Scene
— це об’єкт, у якому знаходиться весь графічний контент програми (всі контроли). Клас Node
являє собою будь-який контрол або контейнер. Можна здогадатися, що контейнерами називають контроли, які вміщують в себе й розташовують інші контроли, наприклад, контейнером є HBox (горизонтальна коробка), яка розташовує свої дочірні Node горизонтально за порядком. Основний батьківський контейнер для всіх елементів (корінь) називається Root (Node). Найпростішим контейнером є панель (Pane
), яку ми й візьмемо. Далі змінимо назву вікна (заголовок, методом setTitle(String)
) і покажемо це вікно на екрані:
public class Main extends Application {
@Override
public void start(Stage stage) {
Pane pane = new Pane();
Scene scene = new Scene(pane, 640, 480);
stage.setScene(scene);
stage.setTitle("Назва вікна");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Це і буде шаблоном для JavaFX програми. Числа 640 та 480 — це розмір контенту вікна у пікселях, тобто 640x480 (VGA). Взагалі, створювати інтерфейс у JavaFX можна двома способами: або через FXML — формат файлів розмітки GUI у вигляді XML, або просто через код. У шкільній програмі використовували перший спосіб, який також дає змогу створювати дизайн інтерфейсу у візуальному редакторі Scene Builder, а потім просто підключити його. Такий принцип розробки називають MVC, детальніше у Wikipedia.
Ресурси для вивчення
На жаль, бібліотека JavaFX є дуже великою та багатофункціональною темою, тому я не можу надати багато роз’яснень. Якщо Ви зацікавленні у створенні гарних графічних програм на Java (або просто з Вас вимагає цього шкільна програма xD), то краще пошукайте додаткову інформацію в Інтернеті. Я можу порекомендувати такі джерела: code.makery (Укр), Jenkov Tutorials, Tutorials Point і JavaTpoint (Англ).
Нижче також приведені мої власні приклади можливостей JavaFX зі знімками екрана, але написані чистим кодом (без FXML).
Контроли
- Код для ознайомлення
- Модулі:
javafx.controls
Фігури 2D
- Код для ознайомлення
- Модулі:
javafx.controls
Фігури 3D
- Код для ознайомлення
- Модулі:
javafx.controls
Розмітка та шрифти
- Код для ознайомлення
- Модулі:
javafx.controls
Діаграми та ефекти
- Код для ознайомлення
- Модулі:
javafx.controls
Анімації
- Код для ознайомлення
- Модулі:
javafx.controls
Scene, обробка зображень та діалоги
- Код для ознайомлення
- Модулі:
javafx.controls
Stage, робота з монітором, вибір файлів
- Код для ознайомлення
- Модулі:
javafx.controls
Події (Events)
- Код для ознайомлення
- Модулі:
javafx.controls
Аудіо й відео
- Код для ознайомлення
- Модулі:
javafx.controls
,javafx.media
Полотно (Canvas) та робота з буфером обміну
- Код для ознайомлення
- Модулі:
javafx.controls
Браузер (рушій — WebKit)
- Код для ознайомлення
- Модулі:
javafx.controls
,javafx.web