1. Меню (Menu)
В JavaFX менюто представлява графичен компонент за организиране на команди, който позволява на потребителя да избира действия чрез йерархична структура от елементи. Менюто обикновено се разполага в горната част на приложението и служи за достъп до основната функционалност.
Менюто в JavaFX е част от сценичната графична архитектура (Scene Graph) и се състои от взаимосвързани обекти, които реализират принципа на композиция.
1.2. Основни компоненти
Меню системата в JavaFX включва три основни класа:
1.1. MenuBar
MenuBar представлява контейнерен компонент, който съдържа едно или повече менюта (Menu). Той визуализира хоризонтална лента, в която са разположени имената на отделните менюта.
Характеристики:
- служи като коренов контейнер за менюта
- може да съдържа множество обекти от тип Menu
- обикновено се поставя в горната част на layout (напр. BorderPane)
1.2. Menu
Menu представлява падащо меню, което съдържа списък от елементи (MenuItem). При избор (клик) върху него се визуализира списък с команди.
Характеристики:
- има текстово заглавие (напр. „Файл“, „Редакция“)
- съдържа колекция от MenuItem
- може да съдържа и подменюта (йерархична структура)
1.3. MenuItem
MenuItem представлява конкретна команда, която потребителят може да избере.
Характеристики:
- изпълнява действие при избор
- поддържа обработка на събития (Event Handling)
- може да има икона, shortcut и др.
2. Йерархична структура
Менюто следва строго определена йерархия:
MenuBar | └── Menu | └── MenuItem
Тази структура отразява начина, по който елементите се композират в декора.
3. Дефиниране
Менюто може да бъде дефинирано декларативно чрез FXML, което позволява разделяне на потребителския интерфейс от бизнес логиката.
<MenuBar xmlns:fx="http://javafx.com/fxml" fx:controller="bg.tu_varna.sit.ps.lab8.task1.controller.MenuController">
<menus>
<Menu text="Файл">
<items>
<MenuItem text="Изход" onAction="#handleExit"/>
</items>
</Menu>
</menus>
</MenuBar>
Controller клас
public class MenuController {
@FXML
private void handleExit() {
System.exit(0);
}
}
- fx:controller указва управляващия клас
- onAction=”#handleExit” свързва UI елемента с метод
- Методът се извиква при избор на съответния MenuItem