Spec-Zone.ru › OpenJavaFX 17

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме интерфейсов
Интерфейс Описание
Skin<C extends Skinnable>
Базовый класс для определения визуального представления элементов управления пользовательского интерфейса, определяя дерево сцены узлов для представления скина.
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
Всплывающее меню, содержащее 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 Control — это элемент управления, у которого в пользовательском интерфейсе есть связанный с ним текстовый контент.
ListCell<T>
Тип Cell, используемый в экземплярах ListView.
ListView<T>
ListView отображает горизонтальный или вертикальный список элементов, из которого пользователь может выбирать или с которыми может взаимодействовать.
ListView.EditEvent<T>
Подкласс Event, используемый в ListView для представления событий, связанных с редактированием.
Меню
Выпадающее меню доступных элементов, отображаемое пользователю только по запросу.
Панель меню
Элемент управления Панель меню традиционно размещается в самом верху пользовательского интерфейса, и в него встроены Menus.
Кнопка меню
Кнопка меню, при нажатии отображает ContextMenu.
Элемент меню
Элемент меню предназначен для использования совместно с Menu для предоставления пользователям вариантов.
Модель множественного выбора<T>
Абстрактный класс, расширяющий SelectionModel для добавления API, поддерживающего множественный выбор.
Пагинация
Элемент управления Пагинация используется для навигации между страницами единого контента, который был разделен на меньшие части.
Поле для пароля
Поле ввода текста, скрывающее введенные символы.
Контроль всплывающего окна
Расширение PopupWindow, позволяющее применять стили CSS.
Полоса прогресса
Специализация ProgressIndicator, представленная в виде горизонтальной полосы.
Показатель прогресса
Круговой элемент управления, используемый для отображения прогресса, либо бесконечного (т.е. неопределенного), либо конечного.
Радиокнопка
Радиокнопки создают серию элементов, где только один элемент может быть выбран.
Радиоэлемент меню
Радиоэлемент меню — это MenuItem, который можно переключать (он использует миксин Toggle).
Базовый класс функций изменения размера<S>
Неизменяемый класс-оболочка для использования политиками изменения размера столбцов, предлагаемыми такими элементами управления, как TableView и TreeTableView.
Скроллбар
Горизонтальная или вертикальная полоса прокрутки с кнопками увеличения и уменьшения и «ползунком», с которым пользователь может взаимодействовать.
Область прокрутки
Элемент управления, предоставляющий прокручиваемый, обрезанный область просмотра своего содержимого.
Событие прокрутки<T>
Событие, связанное с ScrollPane и виртуализированными элементами управления, такими как ListView, TableView, TreeView и TreeTableView.
Модель выбора<T>
Модель выбора — абстрактный класс, используемый элементами управления пользовательского интерфейса для обеспечения согласованного API для управления выбором.
Разделитель
Горизонтальная или вертикальная разделительная линия.
Разделитель меню
MenuItem, который, как следует из названия, позволяет встраивать горизонтальную разделительную линию, назначив Separator свойству content CustomMenuItem. Это сделано для удобства, так как группы menuitems могут быть разделены разделителем.
Модель единственного выбора<T>
Модель выбора, которая требует, чтобы в данный момент был выбран только один индекс.
Базовая оболочка<C extends Control>
Базовый класс реализации для определения визуального представления элементов управления пользовательского интерфейса, определением графа сцены узлов для представления skin.
Ползунок
Элемент управления Ползунок используется для отображения непрерывного или дискретного диапазона допустимых числовых значений и позволяет пользователю взаимодействовать с элементом управления.
Событие сортировки<C>
Событие, связанное с сортировкой TableView и TreeTableView.
Спиннер<T>
Однострочное текстовое поле, позволяющее пользователю выбирать число или значение объекта из упорядоченной последовательности.
Производитель значений Spinner<T>
Производитель значений Spinner — модель, стоящая за JavaFX Spinner control — без установленного производителя значений Spinner не может работать.
Производитель значений Spinner. DoubleSpinnerValueFactory
Реализация SpinnerValueFactory для работы с двойными значениями.
Производитель значений Spinner. IntegerSpinnerValueFactory
Реализация SpinnerValueFactory для работы с целыми значениями.
Производитель значений Spinner. ListSpinnerValueFactory<T>
Реализация SpinnerValueFactory для работы со списком значений.
Разделенная кнопка меню
Разделенная кнопка меню, как и MenuButton, тесно связана с выбором MenuItem из меню.
Разделительная панель
Элемент управления, имеющий две или более стороны, разделенные разделителем, который пользователь может перетаскивать, чтобы увеличить пространство на одной стороне, что приведет к уменьшению другой стороны на равную величину.
Разделитель панели
Представляет собой один разделитель в SplitPane.
Вкладка
Вкладки размещаются в 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>
A 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.
END_OF_DOCUMENT_MARKER
TreeTableColumn<S,​T>
A 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>
A 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