Spec-Zone.ru › OpenJavaFX 21

Пакет javafx.scene.control

package 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. Каждый Control имеет ссылку на единственный Skin, который является реализацией представления для данного Control. Control делегирует Skin ответственность за вычисление минимальных, максимальных и предпочтительных размеров Control, смещения базовой линии и проверки попадания (содержания и пересечения). Также Skin, или делегат Skin, отвечает за реализацию и реакцию на все значимые события клавиш, возникающие на Control, когда он содержит фокус.

Control

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

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

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

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

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

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

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

Существует два метода настройки внешнего вида Control. Наиболее сложный, но гибкий подход заключается в написании нового Skin для Control, который точно реализует желаемый визуальный вид. Подробнее см. документацию по Skin.

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

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

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

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

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

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

javafx.graphics
javafx.controls
javafx.controls
Модуль Пакет Описание
javafx.scene
Предоставляет основной набор базовых классов для API графической системы JavaFX.
javafx.scene.control.cell
Пакет javafx.scene.control.cell, в котором находятся все классы, связанные с ячейками, за исключением основных классов, таких как Cell, IndexedCell, ListCell, TreeCell и TableCell.
javafx.scene.control.skin
Пакет javafx.scene.control.skin содержит классы скинов, обычно по одному для каждого UI-элемента управления.
Класс Описание
Accordion
Аккордеон — это группа TitlePanes.
Alert
Класс Alert наследуется от класса Dialog и предоставляет поддержку для ряда предварительно созданных типов диалогов, которые можно легко отобразить пользователям, чтобы запросить ответ.
Alert.AlertType
Перечисление, содержащее доступные предварительно созданные типы сообщений, которые класс Alert может использовать для предварительной заполнения различных свойств.
Button
Простая кнопка.
ButtonBar
ButtonBar по сути является HBox с дополнительной функциональностью для размещения кнопок, специфичных для операционной системы.
ButtonBar.ButtonData
Перечисление всех доступных аннотаций данных кнопок.
ButtonBase
Базовый класс для кнопочных элементов пользовательского интерфейса, включая гиперссылки, кнопки, переключаемые кнопки, флажки и радиокнопки.
ButtonType
Класс ButtonType используется в рамках API JavaFX Dialog (а точнее, API DialogPane) для указания, какие кнопки должны отображаться пользователям в диалогах.
Cell<T>
API Cell используется для виртуализированных элементов управления, таких как 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.
ConstrainedColumnResizeBase
Базовый класс для политики ограничения изменения размера колонки.
ContentDisplay
Положение размещения содержимого в метке.
ContextMenu
Всплывающее меню, содержащее ObservableList элементов меню.
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, содержащая свойство index, которое отображает индекс в модели данных, лежащей в основе визуализации.
IndexRange
Класс, представляющий непрерывный диапазон целочисленных значений.
Label
Label — это элемент управления текстом, который нельзя редактировать.
Labeled
Элемент управления Labeled — это Control с текстовым содержимым, ассоциированным с ним в интерфейсе пользователя.
ListCell<T>
Тип Cell, используемый в экземплярах ListView.
ListView<T>
ListView отображает горизонтальный или вертикальный список элементов, из которого пользователь может выбирать или с которым может взаимодействовать.
ListView.EditEvent<T>
Подкласс Event, используемый в ListView для представления событий, связанных с редактированием.
Menu
Всплывающее меню выполнимых пунктов, которое отображается пользователю только по запросу.
MenuBar
Элемент управления MenuBar традиционно размещается в верхней части пользовательского интерфейса, и в него встроены Menus.
MenuButton
MenuButton — это кнопка, которая при нажатии отображает ContextMenu.
MenuItem
MenuItem предназначен для использования совместно с Menu для предоставления пользователю вариантов.
MultipleSelectionModel<T>
Абстрактный класс, который расширяет SelectionModel, добавляя API для поддержки множественного выбора.
OverrunStyle
Определяет поведение метки Control, когда пространство для отображения текста меньше, чем пространство, необходимое для отображения всей строки.
Pagination
Контрол Pagination используется для навигации между страницами одного содержимого, которое разделено на более мелкие части.
PasswordField
Поле ввода текста, маскирующее введённые символы.
PopupControl
Расширение PopupWindow, позволяющее использовать стили CSS.
ProgressBar
Специализация ProgressIndicator, представленная в виде горизонтальной полосы.
ProgressIndicator
Круговой контрол, используемый для индикации прогресса, либо бесконечного (т.е. неопределённого), либо конечного.
RadioButton
RadioButton создаёт набор элементов, где только один элемент может быть выбран.
RadioMenuItem
RadioMenuItem — это MenuItem, который можно переключать (он использует миксин Toggle).
ResizeFeaturesBase<S>
Класс-обёртка, используемый для политик изменения размера столбцов, предлагаемых такими контролами, как TableView и TreeTableView.
ScrollBar
Горизонтальная или вертикальная полоса со стрелками увеличения и уменьшения и «ползунком», с которым пользователь может взаимодействовать.
ScrollPane
Контрол, предоставляющий прокручиваемый, обрезной viewport содержимого.
ScrollPane.ScrollBarPolicy
Перечисление, обозначающее политику, используемую прокручиваемым Control для решения вопроса о показе полосы прокрутки.
ScrollToEvent<T>
Событие, связанное с ScrollPane и виртуализированными контролами, такими как ListView, TableView, TreeView и TreeTableView.
SelectionMode
Перечисление, используемое для указания, сколько элементов может быть выбрано в MultipleSelectionModel.
SelectionModel<T>
SelectionModel — абстрактный класс, используемый элементами пользовательского интерфейса для предоставления согласованного API для поддержки выбора.
Separator
Горизонтальная или вертикальная разделительная линия.
SeparatorMenuItem
MenuItem, который, как следует из названия, позволяет встраивать горизонтальную разделительную линию, назначив Separator свойству content элемента CustomMenuItem. Это сделано для удобства, так как группы menuitems можно разделять с помощью разделителя.
SingleSelectionModel<T>
SelectionModel, который требует, чтобы в любой момент времени был выбран только один индекс.
Skin<C extends Skinnable>
Интерфейс для определения визуального представления элементов управления пользовательским интерфейсом.
SkinBase<C extends Control>
Базовый реализующий класс для определения визуального представления элементов управления пользовательским интерфейсом, определяя графическую сцену узлов для представления skin.
Skinnable
Интерфейс Skinnable реализуется классом Control, и, следовательно, реализуется всеми Control-реализациями.
Slider
Контрол Slider используется для отображения непрерывного или дискретного диапазона допустимых числовых выборов и позволяет пользователю взаимодействовать с контролом.
SortEvent<C>
Событие, связанное с сортировкой TableView и TreeTableView.
Spinner<T>
Однострочное поле ввода, которое позволяет пользователю выбирать число или значение объекта из упорядоченной последовательности.
SpinnerValueFactory<T>
SpinnerValueFactory — модель, стоящая за JavaFX Spinner control. Без установленного фабрики значений Spinner не может быть использован.
SpinnerValueFactory.DoubleSpinnerValueFactory
Реализация SpinnerValueFactory, предназначенная для итерации по значениям типа double.
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>
Событие, которое генерируется при выполнении пользователем редактирования ячейки таблицы.
TableColumn.SortType
Перечисление, определяющее тип сортировки, применяемой к конкретному столбцу.
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>
A FocusModel с дополнительными возможностями для поддержки требований элемента управления TableView.
TableView.TableViewSelectionModel<S>
Простой расширение абстрактного класса SelectionModel, позволяющее обеспечить специальную поддержку для элементов управления TableView.
TabPane
Элемент управления, позволяющий переключаться между группой Tabs.
TabPane.TabClosingPolicy
Определяет, как TabPane обрабатывает закрытие вкладок с точки зрения конечного пользователя.
TabPane.TabDragPolicy
Это перечисление определяет политики перетаскивания вкладок в TabPane.
TextArea
Компонент ввода текста, позволяющий пользователю вводить несколько строк простого текста.
TextField
Компонент ввода текста, позволяющий пользователю вводить одну строку неформатированного текста.
TextFormatter<V>
Форматировщик описывает формат TextInputControl текста, используя два разных механизма: фильтр (TextFormatter.getFilter()), который может перехватывать и изменять ввод пользователя.
TextFormatter.Change
Содержит состояние, представляющее изменение содержимого или выбора для TextInputControl.
TextInputControl
Абстрактный базовый класс для элементов управления вводом текста.
TextInputControl.Content
Интерфейс, представляющий содержимое элемента ввода текста.
TextInputDialog
Диалоговое окно, отображающее элемент управления вводом текста пользователю.
TitledPane
TitledPane — это панель с заголовком, которую можно открывать и закрывать.
Toggle
Представляет элемент управления, который можно переключать между выбранным и невыбранным состояниями.
ToggleButton
ToggleButton — специализированный элемент управления, который может быть выбран.
ToggleGroup
Класс, содержащий ссылку на все Toggles, чьи переменные selected должны управляться таким образом, чтобы в ToggleGroup можно было выбрать только один Toggle.
ToolBar
ToolBar — это элемент управления, который отображает элементы горизонтально или вертикально.
Tooltip
Подсказки — это общие элементы пользовательского интерфейса, которые обычно используются для отображения дополнительной информации о узле в дереве сцены, когда указатель мыши наводится на узел.
TreeCell<T>
Тип Cell, используемый с элементом управления TreeView.
TreeItem<T>
Модель для одного узла, обеспечивающего иерархию значений для такого элемента управления, как TreeView.
TreeItem.TreeModificationEvent<T>
A Event содержащий соответствующую информацию для всех форм изменений TreeItem.
TreeSortMode
Определяет, как элементы дерева в элементах управления пользовательским интерфейсом в виде дерева должны быть отсортированы.
TreeTableCell<S,T>
Представляет одно пересечение строки/столбца в TreeTableView.
TreeTableColumn<S,T>
A TreeTableView состоит из ряда экземпляров TreeTableColumn.
TreeTableColumn.CellDataFeatures<S,T>
Вспомогательный класс, используемый в TreeTableColumn в качестве оберточного класса для предоставления всей необходимой информации для определенной Cell.
TreeTableColumn.CellEditEvent<S,T>
Событие, которое срабатывает, когда пользователь выполняет редактирование ячейки таблицы.
TreeTableColumn.SortType
Перечисление, определяющее тип сортировки, применяемой к конкретному столбцу.
TreeTablePosition<S,T>
Этот класс используется для представления одной строки/столбца/ячейки в TreeTableView.
TreeTableRow<T>
TreeTableRow — это IndexedCell, но разработчикам, создающим экземпляры TreeTableView, редко нужно его использовать.
TreeTableView<S>
Элемент управления TreeTableView предназначен для визуализации неограниченного количества строк данных, разделенных на столбцы.
END_OF_DOCUMENT_MARKER
TreeTableView.EditEvent<S>
A subclass of Event specifically used in TreeTableView for representing edit-related events.
TreeTableView.ResizeFeatures<S>
An immutable wrapper class for use with the TableView column resize functionality.
TreeTableView.TreeTableViewFocusModel<S>
A FocusModel with additional functionality to support the requirements of a TableView control.
TreeTableView.TreeTableViewSelectionModel<S>
A simple extension of the SelectionModel abstract class to provide special support for TreeTableView controls.
TreeView<T>
The TreeView control provides a view of a tree root (of type TreeItem).
TreeView.EditEvent<T>
A subclass of Event used specifically in TreeView for representing edit-related events.

© 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