Оглавление
JavaFX
Настольные приложения на Java: окна, элементы управления, FXML, CSS, свойства и привязки.
1.Начало работы
- Что такое JavaFXЗачем нужен JavaFX, где его используют, какую версию берём в курсе и какое приложение будем строить.
- Создание проектаСоздаём проект JavaFX из архетипа Maven, обновляем pom.xml, разбираем module-info.java и запускаем окно командой mvn javafx:run.
- Application, Stage и SceneЖизненный цикл приложения JavaFX: init, start и stop, окно Stage, сцена Scene и поток JavaFX Application Thread.
2.Интерфейс
- VBox и HBoxКонтейнеры VBox и HBox: столбец и строка узлов, отступы, выравнивание и растягивание поля на всю ширину.
- BorderPane и GridPaneКаркас окна с BorderPane: верх, низ, левая панель и центр. Форма в виде таблицы с GridPane и настройка колонок.
- Элементы управленияLabel, TextField, TextArea, ComboBox, CheckBox и Button: как создать элемент, задать начальное значение и прочитать то, что ввёл пользователь.
- События и обработчикиКак JavaFX сообщает о нажатиях: setOnAction, ссылка на метод, клавиша Enter в поле, щелчки мышью и сочетания клавиш.
- Свойства и привязкиСвойства JavaFX: слушатели изменений, привязка bind, вычисляемые значения, своё свойство IntegerProperty и отключение кнопки без единого if.
3.Списки и таблицы
- ListView и ObservableListЗапись Note для заметки, наблюдаемый список ObservableList, ListView с собственными ячейками, выбор элемента, добавление и удаление.
- TableViewТаблица заметок: колонки TableColumn, фабрика значений ячеек для записи, сортировка по щелчку на заголовке, ширина колонок и текст пустой таблицы.
4.FXML и стили
- FXML: разметка окнаОписываем интерфейс в XML-файле FXML вместо Java-кода: подключение javafx-fxml, папка resources, FXMLLoader, атрибуты, вложенные элементы и fx:id.
- Контроллер FXMLКласс-контроллер для FXML: атрибут fx:controller, поля с аннотацией @FXML, метод initialize и обработчики onAction.
- Scene BuilderВизуальный редактор FXML: где взять Scene Builder, из каких панелей он состоит, как задать контроллер, fx:id и обработчики и что он меняет в файле.
- Стили CSSОформление JavaFX через CSS: файл стилей в ресурсах, подключение к сцене, селекторы по классу и fx:id, псевдоклассы и свойства с приставкой -fx-.
5.Готовое приложение
- Диалоги и AlertСтандартные диалоги JavaFX: предупреждение Alert, подтверждение удаления со своими кнопками, ввод строки в TextInputDialog и привязка диалога к окну через initOwner.
- Несколько оконВторое окно для редактирования заметки: отдельный FXML и контроллер, новый Stage, модальность, передача данных между окнами и смена сцены.
- Сохранение заметок в JSONЗаметки переживают перезапуск: библиотека Jackson 3, класс NoteStorage для чтения и записи файла notes.json и автоматическое сохранение через слушатель списка.
- Фоновые задачи: Task и Platform.runLaterПочему долгая работа в потоке JavaFX замораживает окно, как вернуть результат в интерфейс через Platform.runLater и как то же сделать классом Task с индикатором загрузки.
- Сборка программы: jlink и jpackageКак отдать приложение пользователю без установленной Java: образ среды выполнения через mvn javafx:jlink и готовая программа или установщик через jpackage.
6.Графика и анимация
- Анимация: переходы и TimelineПлавное появление таблицы через FadeTransition, исчезающее сообщение, встряхивание поля через TranslateTransition и пульсация счётчика на Timeline с KeyFrame.
- Диаграммы: PieChart, BarChart и LineChartОкно статистики записной книжки: круговая диаграмма по категориям, столбчатая диаграмма с двумя сериями, оси CategoryAxis и NumberAxis и заполнение из списка заметок.
- Рисование на CanvasХолст Canvas и GraphicsContext: прямоугольники, круги, линии и текст, цвета заливки и обводки, рисование мышью и перерисовка по сохранённым данным в окне «Набросок».