Въведение в JavaFX

JavaFX е модерна Java библиотека за изграждане на графични потребителски интерфейси (GUI) за десктоп приложения. С нейна помощ можете да създавате прозорци, контроли (бутони, текстови полета и др.), графики, анимации и мултимедийни елементи. JavaFX е проектирана да работи на устройства, които поддържат Java, включително Windows, macOS и Linux.

Архитектура на JavaFX

JavaFX използва вътрешна слоева архитектура, която осигурява разделение на отговорностите между различните подсистеми и позволява изграждането на производителни и кросплатформени графични приложения. Тази архитектура описва начина, по който JavaFX API комуникира с графичния енджин, прозоречната система, мултимедията и операционната система.


image


  • JavaFX API: Най-горният слой, който предоставя класове и пакети за анимации, UI контроли, CSS стилизиране, scene graph, събития, мултимедия и жизнения цикъл на приложението.
  • Scene Graph: Ядро на графичния интерфейс; йерархично дърво от възли (root, branch, leaf), представящи визуалните компоненти.
  • Quantum Toolkit: Свързва Prism (графичния енджин) и Glass (прозоречния toolkit) с API-то.
  • Prism: Хардуерно ускорен 2D/3D графичен енджин; при липса на GPU преминава към софтуерно рендериране.
  • Glass Windowing Toolkit: Платформено зависим слой, който управлява прозорци, събития и повърхности на операционната система.
  • WebView: Вгражда уеб съдържание (HTML5, CSS, JavaScript) и позволява взаимодействие между Java и JavaScript.
  • Media Engine: Високопроизводителен мултимедиен pipeline (GStreamer) за възпроизвеждане на аудио и видео.

Логическа структура на JavaFX приложение



Structure-of-JavaFx-Application



  1. Основни компоненти
    • Stage/Дисплей – Главният прозорец на приложението.
    • Scene/Декор – Съдържанието (интерфейсът), което се вижда в прозореца.
    • Scene Graph – Йерархична структура от елементи (възли / nodes), които образуват интерфейса на приложението. Всеки елемент (напр. Button, Label, TextField) е node.
  2. Node (възел)
    Всеки Node представлява единичен елемент от сцената и има собствено състояние, включително:
    • ID – уникален идентификатор на node
    • Style – CSS стилове, приложени върху node
    • Effects – визуални ефекти (светлини, сенки, трансформации)
    • Event Handlers – обработка на събития като клик, движение на мишката, натискания на клавиши
    • State – текущо състояние на елемента (видимост, активен/неактивен и т.н.)

Жизнен цикъл на JavaFX приложение

За да създадем JavaFX приложение, нашият клас трябва да наследява абстрактния клас javafx.application.Application. Жизненият цикъл на приложението се контролира чрез четири основни метода: init(), start(Stage stage), stop() и статичния метод launch().


529819736-0916eab7-119b-431b-9199-71615ef78ca0


  1. launch() – стартиране на приложението Това е статичен метод, който се извиква първи в JavaFX приложението. launch() подготвя средата за JavaFX (инициализира нишките, графичния pipeline, сцената и др.) и след това създава инстанция на класа, който наследява Application. Важно: launch() никога не се извиква от start() — тя е входната точка за стартиране на приложението.

  2. init() – инициализация След създаването на инстанцията на приложението, се извиква методът init(). На този етап JavaFX API все още не е готов, което означава, че не трябва да създаваме UI елементи или сцена тук. Този метод би бил подходящо място за:

    • зареждане на конфигурационни файлове
    • подготовка на данни
    • инициализация на бизнес логика, която няма директна връзка с интерфейса

Важно: Методът се извиква еднократно за целия жизнен цикъл на приложението.

  1. start(Stage stage) – стартиране на интерфейса Това е основният метод, в който се създава графичният интерфейс на приложението. Stage представлява главния прозорец на приложението. В start():
  • Създаваме сцена (Scene) и добавяме layout контейнери, бутони, текстови полета и други UI елементи.
  • Настройваме заглавие, размери на прозореца, видимост на елементи.
  • Свързваме събития (event handlers) с графичните елементи.
  • Накрая извикваме stage.show(), за да се визуализира прозорецът.

Важно: start() се извиква след init() и е изпълнено на JavaFX Application Thread, което означава, че всички операции с UI са безопасни.

  1. stop() – затваряне на приложението Методът stop() се извиква при затваряне на приложението, например когато потребителят кликне „X“ на прозореца.

Подходящ за:

  • освобождаване на ресурси (файлове, връзки с база данни)
  • спиране на фонови нишки
  • записване на състояние или настройки

Методът гарантира, че приложението може да приключи безопасно, без загуба на данни.


This site uses Just the Docs, a documentation theme for Jekyll.