Spec-Zone.ru › OpenJavaFX 24

Пакет 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 наследуется от Parent, и, следовательно, не является листом. С точки зрения разработчика или дизайнера Control можно рассматривать как лист в многих случаях. Например, разработчик или дизайнер может рассматривать кнопку как прямоугольник или другой простой лист.

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

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

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

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

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

Стилизация Контролов

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

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

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

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

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

Каждый UI-контрол указывает styleClass, который может быть использован для стилизации контролов из внешнего стилизованного файла. Например, кнопка имеет CSS-стиль class "button". Имена CSS-стилей class разделены дефисами и написаны строчными буквами, в отличие от верблюжьего регистра, в противном случае они идентичны. Например, 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 ячеек используется для виртуализированных элементов управления, таких как ListView, TreeView и TableView.
CheckBox
Элемент управления с выбором в трёх состояниях, обычно оформленный как поле с галочкой или отметкой при выборе.
CheckBoxTreeItem<T>
Подкласс TreeItem, который добавляет поддержку состояний выбранного, не выбранного и неопределённого.
CheckBoxTreeItem.TreeModificationEvent<T>
Класс TreeModificationEvent, который работает аналогично классу TreeItem.TreeModificationEvent, в том смысле, что данное событие будет подниматься вверх по иерархии CheckBoxTreeItem, пока родительский узел не станет нулевым.
CheckMenuItem
Элемент меню, который можно переключать между выбранным и не выбранным состояниями.
ChoiceBox<T>
ChoiceBox используется для представления пользователю небольшого набора предопределённых вариантов, из которых он может выбрать.
ChoiceDialog<T>
Диалоговое окно, которое отображает пользователю список вариантов, из которых он может выбрать не более одного элемента.
ColorPicker
Элемент управления ColorPicker позволяет пользователю выбрать цвет из стандартной палитры цветов с помощью простого нажатия или определить собственный цвет.
ComboBox<T>
Реализация абстрактного класса ComboBoxBase для наиболее распространённой формы ComboBox, где пользователю отображается всплывающий список, предоставляющий варианты выбора.
ComboBoxBase<T>
Абстрактный базовый класс для элементов управления ComboBox.
ConstrainedColumnResizeBase
Базовый класс для политики ограниченного изменения размера столбца.
ContentDisplay
Позиция для размещения содержимого в Label.
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 с свойством индекса, которое отображает данные модели, лежащие в основе визуализации.
IndexRange
Класс, представляющий непрерывный диапазон целочисленных значений.
Label
Label — это элемент управления текстом, который нельзя редактировать.
Labeled
Элемент управления Labeled — это элемент управления, который имеет в своём пользовательском интерфейсе текстовое содержимое.
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
Определяет поведение метки элемента управления, когда область для отображения текста меньше области, необходимой для отображения всей строки.
Pagination
Элемент управления Pagination используется для навигации между страницами единого содержимого, разделённого на меньшие части.
PasswordField
Поле ввода текста, маскирующее вводимые символы.
PopupControl
Расширение PopupWindow, позволяющее использовать стили CSS.
ProgressBar
Специализация ProgressIndicator, представленная горизонтальной полосой.
ProgressIndicator
Круговой элемент управления, используемый для индикации прогресса, либо бесконечного (т.е. неопределённого), либо конечного.
RadioButton
RadioButton создаёт серию элементов, где только один элемент может быть выбран.
RadioMenuItem
RadioMenuItem — это MenuItem, который можно переключать (он использует миксин Toggle).
ResizeFeaturesBase<S>
Класс-обёртка, используемый политиками изменения размера столбцов, предлагаемыми такими элементами управления, как TableView и TreeTableView.
ScrollBar
Горизонтальная или вертикальная полоса прокрутки с кнопками увеличения и уменьшения и «кнопкой» (thumb), с которой пользователь может взаимодействовать.
ScrollPane
Элемент управления, обеспечивающий прокручиваемый, обрезанный (clipped) viewport своего содержимого.
ScrollPane.ScrollBarPolicy
Перечисление, обозначающее политику, используемую прокручиваемым элементом управления для решения вопроса о том, показывать ли полосу прокрутки.
ScrollToEvent<T>
Событие, связанное с ScrollPane и виртуализированными элементами управления, такими как ListView, TableView, TreeView и TreeTableView.
SelectionMode
Перечисление, используемое для указания, сколько элементов может быть выбрано в MultipleSelectionModel.
SelectionModel<T>
SelectionModel — абстрактный класс, используемый элементами пользовательского интерфейса для предоставления согласованного API для управления выделением.
Separator
Горизонтальная или вертикальная разделительная линия.
SeparatorMenuItem
A 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>
Событие, которое срабатывает, когда пользователь выполняет редактирование ячейки таблицы.
END_OF_DOCUMENT_MARKER
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 переменные должны управляться таким образом, чтобы только один Toggle внутри ToggleGroup мог быть выбран в любой момент времени.
ToolBar
ToolBar — это элемент управления, который отображает элементы горизонтально или вертикально.
Tooltip
Подсказки — это распространённые элементы пользовательского интерфейса, которые обычно используются для отображения дополнительной информации о узле в дереве сцены, когда пользователь наводит на него курсор.
TreeCell<T>
Тип Cell, используемый с элементом управления TreeView.
TreeItem<T>
Модель для одного узла, предоставляющая иерархию значений для элемента управления, такого как TreeView.
TreeItem.TreeModificationEvent<T>
Событие 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>
Подкласс Event, используемый в TreeTableView для представления событий, связанных с редактированием.
TreeTableView.ResizeFeatures<S>
Неизменяемый оберточный класс для использования в функциональности column resize TableView.
TreeTableView.TreeTableViewFocusModel<S>
Модель FocusModel с дополнительными функциями, поддерживающими требования управления TableView.
TreeTableView.TreeTableViewSelectionModel<S>
Простое расширение абстрактного класса SelectionModel для специальной поддержки управления TreeTableView.
TreeView<T>
Управление TreeView предоставляет представление корня дерева (типа TreeItem).
TreeView.EditEvent<T>
Подкласс Event, используемый в TreeView для представления событий, связанных с редактированием.

Сообщить об ошибке или предложить улучшение
Авторское право © 2008, 2025, Oracle и/или его дочерние компании. Все права защищены.

© 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