JavaFX

JavaFX — це бібліотека (навіть фреймворк), розроблена Oracle як окремий проєкт (починаючи з Java 11) для легкого створення доволі гарного та сучасного, функціонального GUI (графічного інтерфейсу користувача). Елементи інтерфейсу (кнопки, текстові поля, повзунки тощо) називаються контролами, або віджетами. Окрім них, в JavaFX можна малювати примітивні фігури (квадрат, круг тощо), або навіть 3D графіку. Звичайно, є й технічні можливості, такі як зміна курсору, діалоги для вибору файлів, створення і дизайн вікон програми та багато іншого.

Бібліотека складається з модулів, що описані нижче. Залежно від їх використання, необхідно дописувати їх через кому в --add-modules=.

  • javafx.controls -> Графічні контроли (основний модуль)
  • javafx.fxml -> Для роботи з FXML файлами
  • javafx.media -> Відео й аудіо плеєри
  • javafx.web -> Вбудований браузер на базі WebKit
  • javafx.swing -> Для інтеграції JavaFX зі Swing

Початок роботи

Фреймворком (англ. фундамент) називається бібліотека, на основі якої будують програми. До таких відноситься й JavaFX, тому основний клас кожної програми (Main) на ньому має наслідувати клас javafx.application.Application. У методі main(String[] args) потрібно викликати лише один метод Application.launch(String[] args), який зробить всю складну роботу щодо створення вікна та запуску нового потоку програми з базовими налаштуваннями, тобто підготує програму. Для самого коду є три методи (в порядку їх виконання):

  1. init(), у якому відбувається ініціалізація
  2. start(Stage stage), у якому пишуть майже весь (або весь) код
  3. stop(), у якому роблять “очистку”, завершальні дії за необхідності

Поняття Stage, Scene і Node

Далі потрібно розібратись із структурою графічної програми: як видно на зображенні, 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).

Контроли

Деякі часто використовувані контроли Ті ж, але зі зміненими станами

Фігури 2D

Стандартні та намальовані вручну

Фігури 3D

3D графіка в JFX

Розмітка та шрифти

Табличний контейнер (GridPane)

Діаграми та ефекти

Візуалізація даних з ефектами

Анімації

Деякі анімації Повертання, зміна кольору і рух

Scene, обробка зображень та діалоги

Фото лапи кота та його фрагменти Діалог підтвердження з кнопками

Stage, робота з монітором, вибір файлів

Вікно зі зміненою прозорістю та стилем Вікно-утиліта Діалог вибору файлу

Події (Events)

Рух кружечка за курсором, натискання ПКМ для зміни кольору, створення квадратиків натисканням клавіші

Аудіо й відео

Відео зі звуком Це ж відео (керування з клавіатури)

Полотно (Canvas) та робота з буфером обміну

Саморобна програма для малювання

Браузер (рушій — WebKit)

Google, кнопки історії та поле пошуку Сайт WarriorS Wiki


Copyleft 🄯 2020–2024 Михайло Стецюк <yaBobJonez@gmail.com>.
Сайт має ліцензію Creative Commons License.
Дякую рідній школі та вчителям!