Пакет javafx.scene.control
См.: Описание
| Интерфейс | Описание |
|---|---|
| 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> | |
| 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 | |
| DateCell | DateCell используется DatePicker для отображения отдельных ячеек сетки в календарном месяце. |
| DatePicker | Элемент управления DatePicker позволяет пользователю ввести дату в виде текста или выбрать дату из всплывающего календаря. |
| Dialog<R> | Диалог в JavaFX оборачивает DialogPane и предоставляет необходимый API для его отображения конечным пользователям. |
| DialogEvent | Событие, связанное с действиями показа/скрытия диалогов. |
| DialogPane | DialogPane следует рассматривать как корневой узел, отображаемый в экземпляре Dialog. |
| FocusModel<T> | Абстрактный базовый класс для реализаций FocusModel. |
| Hyperlink | Элемент метки, подобный HTML, который может содержать графику и/или текст и реагирует на наведение курсора и щелчки. |
| IndexedCell<T> | Реализация Cell, содержащая свойство индекса, отображающее данные в модели данных, лежащей в основе визуализации. |
| IndexRange | Класс, представляющий непрерывный диапазон целых значений. |
| Label | Метка — это элемент управления текстом, который нельзя редактировать. |
| Labeled | Labeled Control — это тот, у которого в интерфейсе есть текстовое содержимое, связанное с ним. |
| ListCell<T> | |
| ListView<T> | ListView отображает горизонтальный или вертикальный список элементов, из которых пользователь может выбрать или с которыми может взаимодействовать. |
| ListView.EditEvent<T> | Подкласс Event, используемый в ListView для представления событий, связанных с редактированием. |
| Menu | Всплывающее меню с действиями, отображаемое пользователю только по запросу. |
| MenuBar | Панель меню обычно размещается в верхней части пользовательского интерфейса, и в неё встроены Menus. |
| MenuButton | MenuButton — это кнопка, которая при нажатии отобразит ContextMenu. |
| MenuItem | MenuItem предназначен для использования в сочетании с Menu для предоставления пользователю вариантов. |
| MultipleSelectionModel<T> | Абстрактный класс, расширяющий SelectionModel, чтобы добавить API для поддержки множественного выбора. |
| Pagination | Элемент управления Pagination используется для навигации между страницами единого содержимого, которое разделено на части. |
| PasswordField | Поле ввода, маскирующее вводимые символы. |
| PopupControl | Расширение PopupWindow, позволяющее использовать CSS-стили. |
| ProgressBar | Специализация ProgressIndicator, представленная в виде горизонтальной полосы. |
| ProgressIndicator | Круговой элемент управления, используемый для индикации прогресса, либо бесконечного (т.е. неопределенного), либо конечного. |
| RadioButton | Радиокнопки создают серию элементов, где только один элемент может быть выбран. |
| RadioMenuItem | |
| 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> | SelectionModel, который требует, чтобы в любой момент времени был выбран только один индекс. |
| SkinBase<C extends Control> | Базовый класс для определения визуального представления элементов управления пользовательского интерфейса путём определения графа сцены узлов для представления skin. |
| Slider | Элемент управления Slider используется для отображения непрерывного или дискретного диапазона допустимых числовых вариантов и позволяет пользователю взаимодействовать с элементом управления. |
| SortEvent<C> | Событие, связанное с сортировкой в TableView и TreeTableView. |
| Spinner<T> | Однострочное текстовое поле, позволяющее пользователю выбирать число или значение объекта из упорядоченной последовательности. |
| SpinnerValueFactory<T> | SpinnerValueFactory — модель, лежащая в основе JavaFX Spinner control. Без установленного value factory Spinner не может использоваться. |
| SpinnerValueFactory.DoubleSpinnerValueFactory | Реализация SpinnerValueFactory, предназначенная для итерации по значениям типа double. |
| SpinnerValueFactory.IntegerSpinnerValueFactory | Реализация SpinnerValueFactory, предназначенная для итерации по значениям типа integer. |
| 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> | 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 должны управляться таким образом, чтобы в любое время был выбран только один в ToggleGroup. |
| ToolBar | ToolBar — это элемент управления, который отображает элементы горизонтально или вертикально. |
| Tooltip | Подсказки — распространённые элементы пользовательского интерфейса, которые обычно используются для отображения дополнительной информации о узле в дереве сцены, когда пользователь наводит на него курсор мыши. |
| TreeCell<T> | |
| 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> | Неизменяемый класс-обёртка для использования в функциональности TreeTableView 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 | Положение расположения содержимого в метке. |
| OverrunStyle | Определяет поведение метки при недостатке места для отображения всего текста. |
| ScrollPane.ScrollBarPolicy | Перечисление, определяющее политику, используемую прокручиваемым элементом управления для решения вопроса о том, отображать ли полосу прокрутки. |
| SelectionMode | Перечисление, используемое для указания количества выбираемых элементов в MultipleSelectionModel. |
| TableColumn.SortType | Перечисление, определяющее тип сортировки, применяемый к определённому столбцу. |
| TabPane.TabClosingPolicy | Определяет, как TabPane обрабатывает закрытие вкладок с точки зрения пользователя. |
| TreeSortMode | Определяет способ сортировки элементов дерева в элементах управления древовидного типа. |
| TreeTableColumn.SortType | Перечисление, определяющее тип сортировки, применяемый к определённому столбцу. |
Описание пакета 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. Каждый элемент управления имеет ссылку на единственную тему, которая является реализацией представления для элемента управления. Элемент управления делегирует те́ме ответственность за вычисление минимальных, максимальных и предпочтительных размеров элемента управления, смещения базовой линии и проверки попадания (включение и пересечение). Также ответственность темы, или делегата темы, заключается в реализации и реагировании на все соответствующие события клавиш, которые происходят на элементе управления, когда он содержит фокус.
Элемент управления
Элемент управления наследуется от Parent и, следовательно, не является листом. С точки зрения разработчика или дизайнера элемент управления в большинстве случаев можно рассматривать как лиственный узел. Например, разработчик или дизайнер может рассматривать кнопку как прямоугольник или другой простой лиственный узел.
Поскольку элемент управления может быть изменён, он будет автоматически изменён на свой предпочтительный размер на каждом такте графического представления. Установка ширины и высоты элемента управления не влияет на его предпочтительный размер. При использовании в контейнере компоновки ограничения компоновки, наложенные на элемент управления (или заданные вручную на элементе управления), определяют, как он позиционируется и масштабируется.
Тему элемента управления можно изменить в любое время. Это обозначит элемент управления как нуждающийся в компоновке, так как изменение темы, вероятно, изменило предпочтительный размер элемента управления. Если тема не указана во время создания элемента управления, для всех встроенных элементов управления будет предоставлена тема по умолчанию на основе CSS.
Каждый элемент управления может иметь необязательную подсказку. Подсказка — это элемент управления, который отображает некоторую (обычно текстовую) информацию о элементе управления пользователю, когда курсор находится над элементом управления в течение определённого периода времени. Её можно стилизовать с помощью CSS так же, как и другие элементы управления.
focusTraversable в элементе управления по умолчанию является истинным, в то время как в Node — ложным по умолчанию. Элементы управления, которые по умолчанию не должны быть фокусируемыми (например, Label), переопределяют это значение на ложное.
Функции getMinWidth, getMinHeight, getPrefWidth, getPrefHeight, getMaxWidth и getMaxHeight напрямую делегируются те́ме. Метод baselineOffset делегируется узлу темы. Не рекомендуется подклассам изменять эти делегирования.
Стилизация элементов управления
Есть два способа настройки внешнего вида элемента управления. Наиболее сложный и гибкий способ — создание новой темы для элемента управления, которая точно реализует желаемый визуальный вид элемента управления. Подробнее см. документацию по темам.
Самый простой и эффективный способ стилизации встроенных элементов управления — использование CSS. Обратите внимание, что в этом выпуске это описание CSS применяется только к темам по умолчанию, предоставляемым для встроенных элементов управления. В последующих выпусках это будет доступно для любых сторонних пользовательских элементов управления, желающих воспользоваться этими возможностями CSS.
Каждая из тем по умолчанию для встроенных элементов управления состоит из нескольких индивидуально стилизуемых областей или регионов. Это похоже на HTML-страницу, которая состоит из <div>, а затем стилизуется с помощью CSS. Каждый отдельный регион может быть нарисован с фоном, границами, изображениями, отступами, отступами и т. д. Поддержка JavaFX CSS включает возможность иметь несколько фонов и границ и выводить цвета. Эти возможности значительно упрощают изменение внешнего вида элементов управления JavaFX с помощью CSS.
Цвета, используемые для рисования тем по умолчанию встроенных элементов управления, все выводятся из основного цвета, акцентного цвета и цвета фона. Просто изменив основной цвет элемента управления, вы можете изменить полученные градиенты и создать кнопки или другие элементы управления, которые визуально соответствуют темам по умолчанию, но визуально выделяются.
Как и все другие узлы в графическом представлении, элементы управления могут быть стилизованы с помощью внешнего файла стилей или указанием стиля непосредственно на элементе управления. Хотя для примеров проще выразить и понять, указав стиль непосредственно на узле, рекомендуется использовать внешний файл стилей и использовать либо класс стиля, либо идентификатор элемента управления так же, как вы бы использовали «класс» или идентификатор HTML-элемента с HTML CSS.
Каждый UI-элемент управления указывает класс стиля, который может быть использован для стилизации элементов управления из внешнего файла стилей. Например, элементу управления кнопкой присваивается класс стиля «кнопка» CSS. Имена классов CSS разделяются дефисами и пишутся строчными буквами, в отличие от верблюжьего регистра, в противном случае они абсолютно одинаковы. Например, Button — «кнопка», RadioButton — «кнопка-радио», Tooltip — «подсказка» и так далее.
Документация по классу каждого элемента управления определяет области темы по умолчанию, которые можно стилизовать. Дополнительную информацию о возможностях CSS, предоставляемых JavaFX, см. в руководстве по CSS.
© 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.