Spec-Zone.ru › OpenJavaFX 11

Пакет javafx.scene.control

Элементы управления пользовательским интерфейсом JavaFX (UI-элементы управления или просто элементы управления) — это специализированные узлы в графическом дереве JavaFX, специально предназначенные для повторного использования в различных контекстах приложений. Они разработаны для высокой визуальной настраиваемости дизайнерами и разработчиками. Они разработаны для эффективной работы с системами компоновки. Примерами таких элементов являются Button, Label, ListView и TextField.

Поскольку элементы управления являются Nodes в графическом дереве, они могут свободно комбинироваться с Groups, Images, Media, Text и basic geometric shapes. Хотя создание новых UI-элементов управления не является тривиальной задачей, их использование и стилизация очень просты, особенно для веб-разработчиков.

Остальная часть данного документа будет посвящена описанию базовой архитектуры библиотеки UI-элементов управления JavaFX, способам стилизации существующих элементов управления, написанию пользовательских скинов и использованию элементов управления для построения более сложных пользовательских интерфейсов.

Архитектура

Элементы управления следуют классической модели MVC. Control является «моделью». Она содержит состояние и функции, которые манипулируют этим состоянием. Сам класс Control не знает, как он отображается или как происходит взаимодействие с пользователем. Эти задачи делегируются Skin («представление»), который может внутренне разделить функциональность представления и контроллера на отдельные классы, хотя в настоящее время в публичном API нет «контроллера».

Все элементы управления наследуются от класса Control, который, в свою очередь, является Parent узлом и является Node. Каждый элемент управления имеет ссылку на единственный Skin, который является реализацией представления для элемента управления. Control делегирует Skin ответственность за вычисление минимальных, максимальных и предпочтительных размеров элемента управления, смещения базовой линии и проверки попадания в область (содержания и пересечения). Также ответственность Skin, или делегата Skin, заключается в реализации и реагировании на все соответствующие события нажатия клавиш, возникающие на элементе управления, когда он содержит фокус.

Control

Control наследуется от Parent, и поэтому не является листом. С точки зрения разработчика или дизайнера Control можно рассматривать как лист в большинстве случаев. Например, разработчик или дизайнер может рассматривать кнопку как прямоугольник или другой простой лист.

Поскольку элемент управления может изменять размер, он будет автоматически изменять размер до своего предпочтительного размера на каждом цикле графического дерева. Установка ширины и высоты элемента управления не влияет на его предпочтительный размер. При использовании в контейнере компоновки ограничения компоновки, наложенные на элемент управления (или заданные вручную на элементе управления), определяют его позиционирование и размер.

Skin элемента управления может быть изменен в любое время. Это пометит элемент управления как нуждающийся в перекомпоновке, так как изменение Skin, вероятно, изменило предпочтительный размер элемента управления. Если Skin не указан в момент создания элемента управления, для всех встроенных элементов управления будет предоставлен по умолчанию skin на основе CSS.

Каждый элемент управления может иметь необязательный подсказку. Подсказка — это элемент управления, который отображает некоторую (обычно текстовую) информацию о элементе управления пользователю, когда курсор мыши находится над элементом управления в течение некоторого времени. Его можно стилизовать с помощью CSS так же, как и другие элементы управления.

focusTraversable переопределяется в Control как true по умолчанию, в то время как в Node он по умолчанию false. Элементы управления, которые по умолчанию не должны быть фокусируемыми (например, Label), переопределяют это значение на false.

Функции getMinWidth, getMinHeight, getPrefWidth, getPrefHeight, getMaxWidth и getMaxHeight напрямую делегируются Skin. Метод baselineOffset делегируется узлу Skin. Не рекомендуется подклассам изменять эти делегирования.

Стилизация элементов управления

Есть два способа настройки внешнего вида элемента управления. Наиболее сложный, но гибкий подход — создание нового Skin для элемента управления, который точно реализует желаемый визуальный вид элемента управления. Для получения дополнительной информации см. документацию по Skin.

Самый простой и очень мощный метод стилизации встроенных элементов управления — использование CSS. Обратите внимание, что в этом релизе данное описание CSS применяется только к скинам по умолчанию, предоставляемым для встроенных элементов управления. В последующих выпусках это будет доступно для любых пользовательских элементов управления сторонних разработчиков, которые хотят воспользоваться этими возможностями CSS.

Каждый из скинов по умолчанию для встроенных элементов управления состоит из нескольких индивидуально стилизуемых областей или регионов. Это очень похоже на HTML-страницу, которая состоит из <div> элементов, а затем стилизуется с помощью CSS. Каждый отдельный регион может быть нарисован с фоном, границами, изображениями, отступами, отступами и так далее. Поддержка CSS в JavaFX включает возможность наличия нескольких фонов и границ и вывода цветов. Эти возможности делают очень простым изменение внешнего вида элементов управления в JavaFX с помощью CSS.

Цвета, используемые для рисования скинов по умолчанию встроенных элементов управления, все выводятся из базового цвета, акцентного цвета и цвета фона. Просто изменив базовый цвет элемента управления, можно изменить выводимые градиенты и создать кнопки или другие элементы управления, которые визуально соответствуют скинам по умолчанию, но при этом выделяются.

Как и все другие узлы в графическом дереве, элементы управления могут быть стилизованы с помощью внешнего файла стилей или путем прямого указания стиля на элементе управления. Хотя для примеров проще выразить и понять, указав стиль непосредственно на узле, рекомендуется использовать внешний файл стилей и использовать styleClass или id элемента управления, как вы бы использовали «класс» или id HTML-элемента в HTML CSS.

Каждый UI-элемент управления указывает styleClass, который может быть использован для стилизации элементов управления из внешнего файла стилей. Например, элементу управления Button присваивается CSS-класс «кнопка». Имена CSS-классов разделяются дефисом, а не в camelCase, в противном случае они точно такие же. Например, Button — «кнопка», RadioButton — «radio-button», Tooltip — «tooltip» и т. д.

В документации к классу каждого элемента управления определены регионы скинов по умолчанию, которые можно стилизовать. Для получения дополнительной информации о возможностях CSS, предоставляемых JavaFX, см. Руководство по справке CSS.

  • Краткое описание интерфейсов
    Интерфейс Описание
    Skin<C extends Skinnable>
    Базовый класс для определения визуального представления элементов управления пользовательского интерфейса путём определения графического дерева узлов для представления skin.
    Skinnable
    Интерфейс Skinnable реализован классом Control, и поэтому реализуется всеми реализациями Control.
    TextInputControl.Content
    Интерфейс, представляющий содержимое текстового поля ввода.
    Toggle
    Представляет элемент управления, который можно переключать между состояниями выбранного и невыбранного.
  • Краткое описание классов
    Класс Описание
  • Accordion
    Акордеон — это группа TitlePanes.
    Alert
    Класс Alert наследуется от класса Dialog и предоставляет поддержку ряда предопределённых типов диалоговых окон, которые можно легко отобразить пользователю, чтобы запросить ответ.
    Button
    Простая кнопка.
    ButtonBar
    ButtonBar — это по сути HBox с дополнительной функциональностью для размещения кнопок в соответствии со спецификой операционной системы.
    ButtonBase
    Базовый класс для кнопочных элементов пользовательского интерфейса, включая гиперссылки, кнопки, переключаемые кнопки, флажки и радиокнопки.
    ButtonType
    Класс ButtonType используется в API JavaFX Dialog (точнее, API DialogPane), чтобы указать какие кнопки должны отображаться пользователю в диалоговых окнах.
    Cell<T>
    API ячеек используется для виртуализированных элементов управления, таких как ListView, TreeView и TableView.
    CheckBox
    Элемент управления с выбором из трех состояний (отмечен/не отмечен/неопределённо). Обычно отображается как квадрат с галочкой при выборе.
    CheckBoxTreeItem<T>
    Подкласс TreeItem, который добавляет поддержку выбранных, невыбранных и неопределенных состояний.
    CheckBoxTreeItem.TreeModificationEvent<T>
    Класс TreeModificationEvent, который работает аналогично классу TreeItem.TreeModificationEvent, в том смысле, что это событие будет «подниматься» вверх по иерархии CheckBoxTreeItem, пока родительский узел не станет null.
    CheckMenuItem
    Элемент меню MenuItem, который может быть переключен между выбранным и невыбранным состояниями.
    ChoiceBox<T>
    ChoiceBox используется для предоставления пользователю небольшого набора предопределенных вариантов, из которых он может выбрать один.
    ChoiceDialog<T>
    Диалоговое окно, которое отображает пользователю список вариантов, из которых он может выбрать один.
    ColorPicker
    Элемент управления ColorPicker позволяет пользователю выбрать цвет из стандартной палитры цветов с помощью одного щелчка или определить свой собственный цвет.
    ComboBox<T>
    Реализация абстрактного класса ComboBoxBase для наиболее распространённого типа ComboBox, где пользователю отображается всплывающее меню с вариантами выбора.
    ComboBoxBase<T>
    Абстрактный базовый класс для элементов управления типа ComboBox.
    ContextMenu
    Всплывающее меню, содержащее список элементов меню.
    Control
    Базовый класс для всех элементов управления пользовательским интерфейсом.
    CustomMenuItem
    Элемент меню MenuItem, который позволяет встраивать произвольные узлы, назначив Node свойству content.
    DateCell
    DateCell используется в DatePicker для отображения отдельных ячеек календаря.
    DatePicker
    Элемент управления DatePicker позволяет пользователю вводить дату в виде текста или выбирать дату из всплывающего календаря.
    Dialog<R>
    Диалоговое окно в JavaFX оборачивает DialogPane и предоставляет необходимый API для его отображения пользователю.
    DialogEvent
    Событие, связанное с действиями отображения/скрытия диалогового окна.
    DialogPane
    DialogPane следует рассматривать как корневой узел, отображаемый в экземпляре Dialog.
    FocusModel<T>
    Абстрактный базовый класс для реализаций FocusModel.
    Hyperlink
    Элемент, похожий на гиперссылку в HTML, который может содержать графику и/или текст и реагирует на наведение курсора и щелчки.
    IndexedCell<T>
    Реализация Cell с свойством индекса, которое сопоставляется с моделью данных, лежащей в основе визуализации.
    IndexRange
    Класс, представляющий непрерывный диапазон целочисленных значений.
    Label
    Label — это элемент управления текстом, который не может быть отредактирован.
    Labeled
    Элемент управления Labeled — это Control, который имеет текстовое содержимое в своём пользовательском интерфейсе.
    ListCell<T>
    Тип Cell, используемый в экземплярах ListView.
    ListView<T>
    ListView отображает горизонтальный или вертикальный список элементов, из которых пользователь может выбрать или с которыми может взаимодействовать.
    ListView.EditEvent<T>
    Подкласс Event, используемый в ListView для представления событий, связанных с редактированием.
    Menu
    Всплывающее меню с элементами управления, которое отображается пользователю только по запросу.
  • MenuBar
    Панель меню традиционно размещается в самом верху пользовательского интерфейса, и в нее встроены Menus.
    MenuButton
    Кнопка меню, которая при нажатии отображает ContextMenu.
    MenuItem
    Элемент меню предназначен для использования совместно с Menu, чтобы предоставить пользователю варианты.
    MultipleSelectionModel<T>
    Абстрактный класс, расширяющий SelectionModel для добавления API, поддерживающего множественный выбор.
    Pagination
    Пагинация используется для навигации между страницами единого содержимого, которое разделено на более мелкие части.
    PasswordField
    Поле ввода текста, маскирующее вводимые символы.
    PopupControl
    Расширение PopupWindow, позволяющее применять стили CSS.
    ProgressBar
    Специализация ProgressIndicator, представленная в виде горизонтальной полосы.
    ProgressIndicator
    Круговой элемент управления, используемый для отображения хода выполнения, либо бесконечного (т.е. неопределенного), либо конечного.
    RadioButton
    Радиокнопки создают набор элементов, где можно выбрать только один.
    RadioMenuItem
    Элемент радиоменю — это MenuItem, который можно переключать (он использует миксин Toggle).
    ResizeFeaturesBase<S>
    Неизменяемый оберточный класс для использования в политиках изменения размера столбцов, предлагаемых элементами управления, такими как TableView и TreeTableView.
    ScrollBar
    Горизонтальная или вертикальная полоса прокрутки с кнопками увеличения и уменьшения и «кнопкой» для взаимодействия пользователя.
    ScrollPane
    Элемент управления, обеспечивающий прокручиваемый, обрезаемый область видимости содержимого.
    ScrollToEvent<T>
    Событие, связанное с ScrollPane и виртуализированными элементами управления, такими как ListView, TableView, TreeView и TreeTableView.
    SelectionModel<T>
    SelectionModel — абстрактный класс, используемый элементами управления пользовательского интерфейса для предоставления согласованного API для управления выбором.
    Separator
    Горизонтальная или вертикальная разделительная линия.
    SeparatorMenuItem
    Элемент MenuItem, который, как следует из названия, позволяет вставить горизонтальную разделительную линию, назначив Separator свойству content элемента CustomMenuItem. Это сделано для удобства, так как группы menuitems могут быть разделены разделителем.
    SingleSelectionModel<T>
    Модель выбора, которая требует, чтобы в любой момент времени был выбран только один индекс.
    SkinBase<C extends Control>
    Базовый реализующий класс для определения визуального представления элементов управления пользовательским интерфейсом, определением графического представления узлов для представления skin.
    Slider
    Слайдер используется для отображения непрерывного или дискретного диапазона допустимых числовых значений, позволяя пользователю взаимодействовать с элементом управления.
    SortEvent<C>
    Событие, связанное с сортировкой TableView и TreeTableView.
    Spinner<T>
    Однострочное текстовое поле, позволяющее пользователю выбрать числовое или объектное значение из упорядоченной последовательности.
    SpinnerValueFactory<T>
    SpinnerValueFactory — модель, стоящая за JavaFX Spinner control — без установленного фабрики значений Spinner не может быть использован.
    SpinnerValueFactory.DoubleSpinnerValueFactory
    Реализация SpinnerValueFactory, предназначенная для итерации по значениям с плавающей точкой двойной точности.
    SpinnerValueFactory.IntegerSpinnerValueFactory
    Реализация SpinnerValueFactory, предназначенная для итерации по целочисленным значениям.
    SpinnerValueFactory.ListSpinnerValueFactory<T>
    Реализация SpinnerValueFactory, предназначенная для итерации по списку значений.
    SplitMenuButton
    SplitMenuButton, как и MenuButton, тесно связан с понятием выбора MenuItem из меню.
    SplitPane
    Элемент управления, имеющий две или более сторон, каждая разделена разделителем, который пользователь может перетаскивать, чтобы дать больше места одной из сторон, в результате чего другая сторона уменьшится на равную величину.
    SplitPane.Divider
    Представляет собой отдельный разделитель в SplitPane.
    Tab
    Вкладки размещаются внутри TabPane, где каждая вкладка представляет собой отдельную «страницу».
  • TableCell<S,​T>
    Представляет пересечение одной строки/столбца в TableView.
    TableColumn<S,​T>
    TableView состоит из нескольких TableColumn.
    TableColumn.CellDataFeatures<S,​T>
    Вспомогательный класс, используемый в TableColumn в качестве оболочки, чтобы предоставить всю необходимую информацию для конкретной ячейки Cell.
    TableColumn.CellEditEvent<S,​T>
    Событие, которое срабатывает, когда пользователь производит редактирование ячейки таблицы.
    TableColumnBase<S,​T>
    Табличные элементы управления (такие как TableView и TreeTableView) состоят из нуля или более экземпляров подкласса TableColumnBase (TableColumn и TreeTableColumn, соответственно).
    TableFocusModel<T,​TC extends TableColumnBase<T,​?>>
    Абстрактный базовый класс для реализации FocusModel, используемых в таблицах (в первую очередь TableView и TreeTableView.
    TablePosition<S,​T>
    Этот класс используется для представления одной строки/столбца/ячейки в TableView.
    TablePositionBase<TC extends TableColumnBase>
    Этот класс используется для представления одной строки/столбца/ячейки в таблице.
    TableRow<T>
    TableRow — это IndexedCell, но разработчикам, создающим экземпляры TableView, редко нужно его использовать.
    TableSelectionModel<T>
    Абстрактный базовый класс для реализации MultipleSelectionModel, используемых в таблицах (прежде всего TableView и TreeTableView.
    TableView<S>
    Элемент управления TableView предназначен для визуализации неограниченного количества строк данных, разбитых на столбцы.
    TableView.ResizeFeatures<S>
    Неизменяемый оберточный класс, используемый для функциональности TableView column resize.
    TableView.TableViewFocusModel<S>
    FocusModel с дополнительной функциональностью для поддержки требований элемента управления TableView.
    TableView.TableViewSelectionModel<S>
    Простая расширение абстрактного класса SelectionModel для специальной поддержки элементов управления TableView.
    TabPane
    Элемент управления, позволяющий переключаться между группой Tabs.
    TextArea
    Компонент ввода текста, позволяющий пользователю вводить несколько строк простого текста.
    TextField
    Компонент ввода текста, позволяющий пользователю вводить одну строку неформатированного текста.
    TextFormatter<V>
    Форматтер описывает формат TextInputControl текста, используя два разных механизма: фильтр (TextFormatter.getFilter()), который может перехватывать и изменять пользовательский ввод.
    TextFormatter.Change
    Содержит состояние, представляющее изменение содержимого или выделения для TextInputControl.
    TextInputControl
    Абстрактный базовый класс для элементов управления вводом текста.
    TextInputDialog
    Диалоговое окно, которое отображает элемент управления вводом текста пользователю.
    TitledPane
    TitledPane — это панель с заголовком, которую можно открывать и закрывать.
    ToggleButton
    ToggleButton — это специализированный элемент управления, который может быть выбран.
    ToggleGroup
    Класс, содержащий ссылку на все Toggles, чьи переменные selected должны управляться таким образом, чтобы только один Toggle в ToggleGroup мог быть выбран в любое время.
    ToolBar
    ToolBar — это элемент управления, который отображает элементы горизонтально или вертикально.
    Tooltip
    Подсказки — это общие элементы пользовательского интерфейса, которые обычно используются для отображения дополнительной информации о узле в дереве сцены, когда на узел наводится курсор мыши.
    TreeCell<T>
    Тип Cell, используемый с элементом управления TreeView.
    TreeItem<T>
    Модель для одного узла, предоставляющего иерархию значений для элемента управления, такого как TreeView.
    TreeItem.TreeModificationEvent<T>
    Event, содержащий релевантную информацию для всех форм изменений TreeItem.
    TreeTableCell<S,​T>
    Представляет пересечение одной строки/столбца в TreeTableView.
    TreeTableColumn<S,​T>
    TreeTableView состоит из нескольких TreeTableColumn.
  • TreeTableColumn.CellDataFeatures<S,​T>
    Класс-обёртка, используемый в TreeTableColumn для предоставления всей необходимой информации для конкретной ячейки Cell.
    TreeTableColumn.CellEditEvent<S,​T>
    Событие, которое срабатывает при редактировании пользователем ячейки таблицы.
    TreeTablePosition<S,​T>
    Этот класс используется для представления одной строки/столбца/ячейки в TreeTableView.
    TreeTableRow<T>
    TreeTableRow — это IndexedCell, но разработчикам, создающим экземпляры TreeTableView, редко требуется его использовать.
    TreeTableView<S>
    Управляющий элемент TreeTableView предназначен для визуализации неограниченного числа строк данных, разбитых на столбцы.
    TreeTableView.EditEvent<S>
    Подкласс Event, используемый специально в TreeTableView для представления событий, связанных с редактированием.
    TreeTableView.ResizeFeatures<S>
    Неизменяемый класс-обёртка для использования в функциональности TableView column resize.
    TreeTableView.TreeTableViewFocusModel<S>
    Модель FocusModel с дополнительным функционалом для поддержки требований управляющего элемента TableView.
    TreeTableView.TreeTableViewSelectionModel<S>
    Простое расширение абстрактного класса SelectionModel для обеспечения специальной поддержки управляющих элементов TreeTableView.
    TreeView<T>
    Управляющий элемент TreeView предоставляет представление на корень дерева (типа TreeItem).
    TreeView.EditEvent<T>
    Подкласс Event, используемый специально в TreeView для представления событий, связанных с редактированием.
  • Сводка перечислений
    Перечисление Описание
    Alert.AlertType
    Перечисление, содержащее доступные предварительно настроенные типы предупреждений, которые класс Alert может использовать для предварительной подготовки различных свойств.
    ButtonBar.ButtonData
    Перечисление всех доступных аннотаций данных кнопок.
    ContentDisplay
    Положение для размещения содержимого в Label.
    OverrunStyle
    Определяет поведение метки Control, когда пространство для рендеринга текста меньше пространства, необходимого для рендеринга всей строки.
    ScrollPane.ScrollBarPolicy
    Перечисление, обозначающее политику, которая должна использоваться управляющим элементом со скроллингом при принятии решения о том, следует ли отображать полосу прокрутки.
    SelectionMode
    Перечисление, используемое для указания количества элементов, которые могут быть выбраны в MultipleSelectionModel.
    TableColumn.SortType
    Перечисление, определяющее тип сортировки, применяемой к определенному столбцу.
    TabPane.TabClosingPolicy
    Это определяет, как TabPane обрабатывает закрытие вкладок с точки зрения конечного пользователя.
    TabPane.TabDragPolicy
    Это перечисление определяет политики перетаскивания для вкладок в TabPane.
    TreeSortMode
    Указывает, как следует сортировать элементы дерева в управляющих элементах пользовательского интерфейса в виде дерева.
    TreeTableColumn.SortType
    Перечисление, определяющее тип сортировки, применяемой к определенному столбцу.

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API