- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- javafx.scene.control.Labeled
-
- javafx.scene.control.Cell<T>
-
- Тип параметров:
-
T- Тип элемента, содержащегося в ячейке.
- Все реализуемые интерфейсы:
-
Styleable,EventTarget,Skinnable
- Прямые известные подклассы:
-
DateCell,IndexedCell
public class Cell<T> extends Labeled
API ячейки используется для виртуализованных элементов управления, таких какListView,TreeViewиTableView. Ячейка являетсяLabeledControlи используется для отображения одной "строки" внутри ListView, TreeView или TableView. Ячейки также используются для каждой отдельной "ячейки" внутри TableView (т.е. каждой точки пересечения строки/столбца). Подробности см. в JavaDoc для каждого элемента управления отдельно.Каждая ячейка связана с одним элементом данных (представленным свойством
item). Ячейка отвечает за отображение этого элемента и, при необходимости, за редактирование элемента. Элемент внутри ячейки может быть представлен текстом или другим элементом управления, например,CheckBox,ChoiceBoxили любым другимNode, таким какHBox,GridPaneили дажеRectangle.Поскольку TreeView, ListView, TableView и другие подобные элементы управления могут потенциально использоваться для отображения огромного количества данных, создание фактической ячейки для каждого элемента в элементе управления нецелесообразно. Мы представляем очень большие наборы данных, используя всего несколько ячеек. Каждая ячейка "перерабатывается" или повторно используется. Именно это мы имеем в виду, когда говорим, что эти элементы управления виртуализированы.
Поскольку ячейка является элементом управления, она по сути является "моделью". Ее кожа отвечает за определение внешнего вида и макета, а поведение отвечает за обработку всех событий ввода и использование этой информации для изменения состояния элемента управления. Кроме того, ячейка стилизуется с помощью CSS, как и любой другой элемент управления. Однако для большинства случаев использования ячейки реализовывать кожу необязательно. Это связано с тем, что можно установить фабрику ячеек — это подробно описано ниже.
Поскольку наиболее распространенным случаем использования ячеек является отображение текста пользователю, этот случай специально оптимизирован внутри ячейки. Это делается путем расширения ячейки от
Labeled. Это означает, что подклассы ячейки должны только установить свойствоtext, а не создавать отдельныйLabelи устанавливать его внутри ячейки. Однако в ситуациях, когда требуется больше, чем просто обычный текст, можно разместить любойNodeв свойствеgraphicячейки. Несмотря на термин, графикой может быть любой узел, и он будет полностью интерактивным. Например, ListCell можно настроить сButtonв качестве графики. Текст кнопки можно привязать к свойствуitemячейки. Таким образом, всякий раз, когда изменяется элемент в ячейке, текст кнопки автоматически обновляется.Ячейка устанавливает focusTraversable в false.
Фабрики ячеек
Способ отображения по умолчанию ячейки
itemзависит от кожного покрова различных виртуализированных контейнеров. Например, ListView по умолчанию преобразует элемент в строку и вызываетLabeled.setText(java.lang.String)с этим значением. Если вы хотите специализировать ячейку, используемую для ListView (например), то вы должны предоставить реализацию обратного вызоваcellFactory, определенного в ListView. Аналогичный API существует в большинстве элементов управления, использующих ячейки (например,TreeView,TableView,TableColumnиListView).Фабрика ячеек вызывается платформой всякий раз, когда определяется необходимость создания новой ячейки. Например, предположим, что ваш ListView содержит 10 миллионов элементов. Создание всех 10 миллионов ячеек было бы чрезвычайно дорогостоящим. Поэтому вместо этого реализация кожного покрова ListView может создавать только необходимое количество ячеек для отображения. Если ListView будет изменен на больший размер, система определит, что необходимо создать дополнительные ячейки. В этом случае она вызовет обратный вызов cellFactory (если он предоставлен) для создания реализации ячейки, которая должна использоваться. Если фабрика ячеек не предоставлена, будет использоваться встроенная реализация по умолчанию.
Реализация фабрики ячеек отвечает не только за создание экземпляра ячейки, но и за конфигурацию этой ячейки таким образом, чтобы она реагировала на изменения ее состояния. Например, если я создал бы пользовательскую ячейку, которая форматирует числа таким образом, что они отображаются как типы валют, я мог бы сделать это так:
public class MoneyFormatCell extends ListCell<Number> { public MoneyFormatCell() { } @Override protected void updateItem(Number item, boolean empty) { // calling super here is very important - don't skip this! super.updateItem(item, empty); // format the number as if it were a monetary value using the // formatting relevant to the current locale. This would format // 43.68 as "$43.68", and -23.67 as "-$23.67" setText(item == null ? "" : NumberFormat.getCurrencyInstance().format(item)); // change the text fill based on whether it is positive (green) // or negative (red). If the cell is selected, the text will // always be white (so that it can be read against the blue // background), and if the value is zero, we'll make it black. if (item != null) { double value = item.doubleValue(); setTextFill(isSelected() ? Color.WHITE : value == 0 ? Color.BLACK : value < 0 ? Color.RED : Color.GREEN); } } }Этот класс затем можно использовать внутри ListView следующим образом:ObservableList<Number> money = ...; final ListView<Number> listView = new ListView<Number>(money); listView.setCellFactory(new Callback<ListView<Number>, ListCell<Number>>() { @Override public ListCell<Number> call(ListView<Number> list) { return new MoneyFormatCell(); } });В этом примере создается анонимный внутренний класс, который просто возвращает экземпляры MoneyFormatCell всякий раз, когда он вызывается. Класс MoneyFormatCell расширяетListCell, переопределяя методupdateItem. Этот метод вызывается всякий раз, когда изменяется элемент в ячейке, например, когда пользователь прокручивает ListView или изменяется содержимое базовой модели данных (и ячейка повторно используется для представления другого элемента в ListView). Из-за этого нет необходимости управлять связями — просто реагировать на изменения элементов, когда происходит этот метод. В примере выше, всякий раз, когда изменяется элемент, мы обновляем свойство текста ячейки и также изменяем цвет текста, чтобы обеспечить правильное визуальное представление. Кроме того, если ячейка "пустая" (то есть используется для заполнения места в ListView, но не имеет связанных с ней данных), мы просто используем пустую строку.Обратите внимание, что существуют дополнительные методы с префиксом "обновить", которые могут представлять интерес, поэтому внимательно ознакомьтесь с документацией API для ячейки и подклассов ячейки.
Конечно, мы также можем использовать API привязки вместо переопределения методов "обновить". Ниже приведен очень тривиальный пример того, как это можно сделать.
public class BoundLabelCell extends ListCell<String> { public BoundLabelCell() { textProperty().bind(itemProperty()); } }Основные цели разработки
- Эффективность во времени и памяти для больших наборов данных
- Простота создания и использования библиотек для пользовательских ячеек
- Простота настройки внешнего вида ячейки
- Простота настройки форматирования отображения (12.34 как $12.34 или 1234% и т.д.)
- Простота расширения для пользовательского визуального оформления
- Простота создания "панелей" данных для визуализации
- Простота анимации размера ячейки или других свойств
Основные варианты использования
Ниже приведены ряд ключевых вариантов использования, используемых для разработки API ячеек, вместе с примерами кода, демонстрирующими, как эти варианты использования удовлетворяются этим API. Это ни в коем случае не должен считаться окончательным списком возможностей или функций, а скорее должно служить руководством по использованию API ячеек. Приведенные ниже примеры сосредоточены на ListView, но та же философия применяется к TreeCells или другим видам ячеек.Изменение цветов ячейки
Это должно быть невероятно просто в JavaFX. Каждая ячейка может быть стилизована непосредственно из CSS. Например, если вы хотите изменить фоновый цвет каждой ячейки в ListView на БЕЛЫЙ, вы можете сделать следующее в CSS:
.list-cell { -fx-padding: 3 3 3 3; -fx-background-color: white; }Если вы хотите установить цвет выделенных ячеек ListView в синий, вы можете добавить это в свой файл CSS:.list-cell:selected { -fx-background-color: blue; }Большинство реализаций ячеек расширяются отIndexedCell, а не от ячейки. IndexedCell добавляет два других состояния псевдокласса: "нечетное" и "четное". С помощью этого вы можете получить чередование строк, выполнив действия в файле CSS:.list-cell:odd { -fx-background-color: grey; }Каждый из этих примеров не требует изменений в коде. Просто обновите свой файл CSS для изменения цветов. Вы также можете использовать псевдоклассы "наведение курсора" и другие псевдоклассы в CSS, как и с другими элементами управления.Другой подход к первому примеру выше (форматирование списка чисел) — использование стилей классов. Предположим, у вас есть
ObservableListчисел для отображения в ListView и вы хотите окрашивать все отрицательные значения в красный цвет, а все положительные или нулевые значения — в черный. Один из способов достижения этого — настройка пользовательской фабрики ячеек, которая изменяет styleClass ячейки в зависимости от того, является ли значение отрицательным или положительным. Это так же просто, как добавить код для проверки, является ли число в ячейке отрицательным, и добавления styleClass "отрицательное". Если число не отрицательное, строка "отрицательное" должна быть удалена. Этот подход позволяет определять цвета из CSS, что обеспечивает простоту настройки. Файл CSS затем будет содержать что-то вроде следующего:.list-cell { -fx-text-fill: black; } .list-cell .negative { -fx-text-fill: red; }Редактирование
Большинство виртуализированных элементов управления, использующих архитектуру ячеек (например,
ListView,TreeView,TableViewиTreeTableView) поддерживают концепцию редактирования значений непосредственно через ячейку. Подробнее о контроллере-специфических деталях редактирования см. в разделе 'редактирование' в документации по классам для связанных выше элементов управления. Остальная часть этого раздела будет охватывать некоторые детали редактирования с помощью ячеек.Общий поток редактирования следующий (обратите внимание, что в этих шагах используется элемент управления
ListViewв качестве примера, но аналогичный API существует для всех упомянутых выше элементов управления, и процесс в целом точно такой же):
- Пользователь запрашивает ввод в ячейку (через команды клавиатуры или мыши), или разработчик запрашивает, чтобы ячейка перешла в режим редактирования (вызванием метода, такого как ListView
edit). Примечание: Если пользователь дважды щелкнет или выполнит соответствующую команду клавиатуры для начала редактирования, он фактически вызывает соответствующий метод редактирования на элементе управления (т. е. метод ввода для редактирования, инициированного пользователем и разработчиком, является одинаковым). - Каждая ячейка в видимой области элемента управления получает уведомление о том, что текущий
editing cellизменился, и проверяет, является ли она сама. В этот момент может произойти одно из трёх:- Если индекс редактирования совпадает с индексом ячейки, на этой ячейке будет вызван
startEdit(). Некоторые рекомендации:- Рекомендуется, чтобы подклассы Cell переопределяли метод
startEdit(), чтобы обновлять визуальное представление ячейки при переходе в состояние редактирования. Однако важно, чтобы подклассы, переопределяющие методstartEdit(), продолжали вызыватьsuper.startEdit(), чтобы родительские классы могли обновлять дополнительное состояние, необходимое для успешного редактирования. - В методе
startEdit()идеально подходит время для изменения визуального представления ячейки. Например (и обратите внимание, что этот пример более подробно описан в javadoc для элемента управления интерфейсомListViewи т. д.), вы можете установитьLabeled.graphicProperty()ячейки наTextFieldи установитьLabeled.textProperty()в значение null. Это позволит конечным пользователям вводить данные и вносить изменения в вашу модель данных. - Когда пользователь закончит редактирование, он захочет подтвердить или отменить изменения. Вы несете ответственность за обработку этого (например, путем настройки Enter для
commit the edit, и клавиши ESC дляcancel the edit). Вы делаете это, прикрепляя соответствующие обработчики событий к узлам, которые вы показываете во время редактирования.
- Рекомендуется, чтобы подклассы Cell переопределяли метод
- Если индекс редактирования не совпадает с индексом ячейки и если ячейка в настоящее время находится в состоянии
editing state, на этой ячейке будет вызванcancelEdit(). Как и в случае с методомstartEdit(), вы должны переопределить этот метод, чтобы очистить визуальное представление ячейки (и, скорее всего, вернутьLabeled.graphicProperty()обратно к null и установитьLabeled.textProperty()в его (возможно, новое) значение. Опять же, убедитесь, что всегда вызываетеsuper.cancelEdit(), чтобы гарантировать правильное обновление всего состояния. - Если индекс редактирования не совпадает с индексом ячейки и если ячейка в настоящее время не находится в состоянии редактирования
isEditing(), на этой ячейке ничего не произойдёт.
- Если индекс редактирования совпадает с индексом ячейки, на этой ячейке будет вызван
- Пользователь запрашивает ввод в ячейку (через команды клавиатуры или мыши), или разработчик запрашивает, чтобы ячейка перешла в режим редактирования (вызванием метода, такого как ListView
- Since:
- JavaFX 2.0
-
Краткое описание свойств
Свойства Тип Свойство Описание BooleanPropertyeditableСвойство, представляющее, разрешено ли для данной ячейки входить в состояние редактирования.ReadOnlyBooleanPropertyeditingСвойство, представляющее, находится ли данная ячейка в состоянии редактирования.ReadOnlyBooleanPropertyemptyСвойство, используемое для представления наличия содержимого в ячейке.ObjectProperty<T>itemЗначение данных, ассоциированное с данной ячейкой.ReadOnlyBooleanPropertyselectedУказывает, выбрана ли эта ячейка.-
Наследуемые свойства от класса javafx.scene.control.Labeled
alignment, contentDisplay, ellipsisString, font, graphic, graphicTextGap, labelPadding, lineSpacing, mnemonicParsing, textAlignment, textFill, textOverrun, text, underline, wrapText
-
Наследуемые свойства от класса javafx.scene.control.Control
contextMenu, skin, tooltip
-
Наследуемые свойства от класса javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
-
Наследуемые свойства от класса javafx.scene.Parent
needsLayout
-
Наследуемые свойства от класса javafx.scene.Node
accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
-
-
Краткое описание полей
-
Наследуемые поля от класса javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
-
Наследуемые поля от класса javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
-
-
Краткое описание конструкторов
Конструкторы Конструктор Описание Cell()Создаёт ячейку по умолчанию со стилем класса по умолчанию 'cell'.
-
Краткое описание методов
Все методыМетоды экземпляраКонкретные методы Модификатор и тип Метод Описание voidcancelEdit()Вызовите эту функцию, чтобы перейти из состояния редактирования в состояние нередактирования, не сохраняя ввод пользователя.voidcommitEdit(T newValue)Вызовите эту функцию, когда это уместно (в зависимости от требований взаимодействия пользователя с интерфейсом редактирования ячейки), чтобы выполнить два действия: Отправить соответствующие события обратно в управляющий элемент пользовательского интерфейса (например,BooleanPropertyeditableProperty()Свойство, определяющее, разрешено ли этой ячейке переходить в состояние редактирования.ReadOnlyBooleanPropertyeditingProperty()Свойство, представляющее, находится ли эта ячейка в состоянии редактирования.ReadOnlyBooleanPropertyemptyProperty()Свойство, используемое для представления наличия содержимого в ячейке.protected BooleangetInitialFocusTraversable()Возвращает начальное состояние перемещения фокуса этого элемента управления, которое используется движком JavaFX CSS для правильной установки его начального значения.TgetItem()Возвращает значение данных, связанное с этой ячейкой.booleanisEditable()Возвращает, разрешено ли этой ячейке переходить в состояние редактирования.booleanisEditing()Представляет, находится ли ячейка в состоянии редактирования или нет.booleanisEmpty()Возвращает булево значение, представляющее, считается ли ячейка пустой или нет.protected booleanisItemChanged(T oldItem, T newItem)Этот метод вызывается подклассами Cell, чтобы определённые действия, требующие значительных вычислений (в частности, вызовupdateItem(Object, boolean)), выполнялись только при необходимости (то есть, они выполняются только тогда, когда текущее установленноеitemсчитается отличным от предлагаемого нового элемента, который может быть установлен).booleanisSelected()Возвращает, выбрана ли в данный момент эта ячейка или нет.ObjectProperty<T>itemProperty()Значение данных, связанное с этой ячейкой.protected voidlayoutChildren()Вызывается во время прохода компоновки для компоновки дочерних элементов в этойParent.ReadOnlyBooleanPropertyselectedProperty()Указывает, выбрана ли эта ячейка или нет.voidsetEditable(boolean value)Разрешает некоторым ячейкам не допускать редактирования.voidsetItem(T value)Устанавливает элемент в заданное значение — не следует вызывать напрямую, так как элемент управляется виртуализированным элементом управления.voidstartEdit()Вызовите эту функцию, чтобы перейти из состояния нередактирования в состояние редактирования, если ячейка разрешает редактирование.protected voidupdateItem(T item, boolean empty)Метод updateItem не должен вызываться разработчиками, но он является лучшим методом для переопределения разработчиками, чтобы позволить им настроить визуализацию ячейки.voidupdateSelected(boolean selected)Обновляет, находится ли эта ячейка в выбранном состоянии или нет.-
Наследуемые методы из класса javafx.scene.control.Labeled
alignmentProperty, contentDisplayProperty, ellipsisStringProperty, fontProperty, getAlignment, getClassCssMetaData, getContentBias, getContentDisplay, getControlCssMetaData, getEllipsisString, getFont, getGraphic, getGraphicTextGap, getInitialAlignment, getLabelPadding, getLineSpacing, getText, getTextAlignment, getTextFill, getTextOverrun, graphicProperty, graphicTextGapProperty, isMnemonicParsing, isUnderline, isWrapText, labelPaddingProperty, lineSpacingProperty, mnemonicParsingProperty, setAlignment, setContentDisplay, setEllipsisString, setFont, setGraphic, setGraphicTextGap, setLineSpacing, setMnemonicParsing, setText, setTextAlignment, setTextFill, setTextOverrun, setUnderline, setWrapText, textAlignmentProperty, textFillProperty, textOverrunProperty, textProperty, toString, underlineProperty, wrapTextProperty
-
Наследуемые методы из класса javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, createDefaultSkin, executeAccessibleAction, getBaselineOffset, getContextMenu, getCssMetaData, getSkin, getTooltip, isResizable, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
-
Наследуемые методы из класса javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty
-
Наследуемые методы из класса javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
-
Наследуемые методы из класса javafx.scene.Node
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty
-
Наследуемые методы из класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Наследуемые методы из интерфейса javafx.css.Styleable
getStyleableNode
-
-
Подробное описание свойств
-
item
public final ObjectProperty<T> itemProperty
Значение данных, связанное с этой ячейкой. Это значение устанавливается виртуализированным элементом управления при создании или обновлении ячейки. Представляет собой исходное значение данных.Это значение должно устанавливаться только в подклассах Cell виртуализированными элементами управления пользовательским интерфейсом, которые знают, как правильно работать с классом Cell.
- Возвращает:
- значение данных, связанное с этой ячейкой
-
empty
public final ReadOnlyBooleanProperty emptyProperty
Свойство, используемое для представления наличия содержимого в ячейке. Если true, ячейка не содержит данных и не связана с элементом данных в виртуализированном элементе управления.Когда ячейка пустая, ее можно стилизовать по-разному с помощью псевдокласса состояния CSS «empty». Например, она может не получать выделение альтернативной строки или не получать заливку фона при наведении курсора.
- См. также:
isEmpty()
-
selected
public final ReadOnlyBooleanProperty selectedProperty
Указывает, выбрана ли эта ячейка или нет. Например, ListView определяет одну или несколько ячеек как «выбранные» ячейки.- См. также:
isSelected()
-
editing
public final ReadOnlyBooleanProperty editingProperty
Свойство, представляющее, находится ли эта ячейка в состоянии редактирования.- См. также:
isEditing()
-
editable
public final BooleanProperty editableProperty
Свойство, представляющее, разрешено ли этой ячейке переходить в состояние редактирования. По умолчанию editable установлен в true в ячейках (хотя для того, чтобы подкласс ячейки мог перейти в состояние редактирования, ему могут потребоваться дополнительные критерии. Например, ListCell требует, чтобы свойство ListVieweditableтакже было true.- См. также:
-
isEditable(),setEditable(boolean)
-
-
Подробное описание конструкторов
-
Cell
public Cell()
Создаёт ячейку по умолчанию со стилем по умолчанию 'cell'.
-
-
Методы
-
itemProperty
public final ObjectProperty<T> itemProperty()
Значение данных, связанное с этой ячейкой. Это значение устанавливается виртуализированным элементом управления, когда ячейка создается или обновляется. Это представляет собой исходное значение данных.Это значение должно устанавливаться только в подклассах ячейки виртуализированными элементами управления пользовательского интерфейса, которые знают, как правильно работать с классом Cell.
- Возвращает:
- значение данных, связанное с этой ячейкой
-
setItem
public final void setItem(T value)
Устанавливает элемент в заданное значение — не следует вызывать напрямую, так как элемент управляется виртуализированным элементом управления.- Параметры:
-
value- новое значение данных, которое нужно установить в эту ячейку
-
getItem
public final T getItem()
Возвращает значение данных, связанное с этой ячейкой.- Возвращает:
- значение данных, связанное с этой ячейкой
-
emptyProperty
public final ReadOnlyBooleanProperty emptyProperty()
Свойство, используемое для представления наличия содержимого в ячейке. Если true, ячейка не содержит данных и не связана с каким-либо элементом данных в виртуализированном элементе управления.Когда ячейка пуста, её можно стилизовать по-другому с помощью псевдокласса состояния CSS «empty». Например, она может не получать выделение альтернативных строк или не получать заливку фоном при наведении.
- См. также:
isEmpty()
-
isEmpty
public final boolean isEmpty()
Возвращает булево значение, представляющее, является ли ячейка пустой.- Возвращает:
- true, если ячейка пустая, иначе false
-
selectedProperty
public final ReadOnlyBooleanProperty selectedProperty()
Указывает, выбрана ли эта ячейка. Например, ListView определяет одну или несколько ячеек как «выбранные».- См. также:
isSelected()
-
isSelected
public final boolean isSelected()
Возвращает, выбрана ли ячейка в данный момент.- Возвращает:
- True, если ячейка выбрана, иначе false.
-
isEditing
public final boolean isEditing()
Представляет, находится ли ячейка в режиме редактирования.- Возвращает:
- true, если эта ячейка в данный момент находится в режиме редактирования, иначе false
-
editingProperty
public final ReadOnlyBooleanProperty editingProperty()
Свойство, представляющее, находится ли эта ячейка в режиме редактирования.- См. также:
isEditing()
-
setEditable
public final void setEditable(boolean value)
Позволяет некоторым ячейкам быть нередактируемыми. Это полезно в случаях, когда, скажем, в списке есть «заголовки строк» — нет смысла, чтобы заголовки строк были редактируемыми, поэтому для них editable должен быть установлен в false.- Параметры:
-
value— булево значение, представляющее, является ли ячейка редактируемой. Если true, ячейка редактируемая, если false, ячейка не может быть отредактирована.
-
isEditable
public final boolean isEditable()
Возвращает, разрешено ли вводить эту ячейку в состояние редактирования.- Возвращает:
- true, если эту ячейку разрешено вводить в состояние редактирования, иначе false
-
editableProperty
public final BooleanProperty editableProperty()
Свойство, представляющее, разрешено ли вводить эту ячейку в состояние редактирования. По умолчанию editable установлен в true для ячеек (хотя для подкласса ячейки, чтобы ему было разрешено входить в своё состояние редактирования, может потребоваться выполнить дополнительные критерии. Например, для ListCell требуется, чтобы свойство ListVieweditableтакже было true.- См. также:
-
isEditable(),setEditable(boolean)
-
startEdit
public void startEdit()
Вызовите эту функцию, чтобы перейти из состояния без редактирования в состояние редактирования, если ячейка редактируема. Если эта ячейка уже находится в состоянии редактирования, она останется в нём.
-
cancelEdit
public void cancelEdit()
Вызовите эту функцию, чтобы перейти из состояния редактирования в состояние без редактирования, не сохраняя введённый пользователем ввод.
-
commitEdit
public void commitEdit(T newValue)
Вызовите эту функцию при необходимости (в соответствии с требованиями взаимодействия пользователя в вашем пользовательском интерфейсе редактирования ячеек), чтобы сделать две вещи:- Отправить соответствующие события обратно в управляющий элемент пользовательского интерфейса (например,
ListView). Это начнёт процесс отправки этого изменения обратно в соответствующий источник данных/свойство (хотя это не гарантирует, что это будет успешно — это зависит от конкретного обработчика подтверждения редактирования, используемого). Дополнительные сведения см. в документации к классу элемента управления пользовательского интерфейса. - Начать переход из состояния редактирования в состояние без редактирования.
В общем случае нет необходимости переопределять этот метод в реализациях пользовательских ячеек — должно быть достаточно просто вызвать этот метод при необходимости (например, при нажатии пользователем клавиши Enter, вы можете сделать что-то вроде
cell.commitEdit(converter.fromString(textField.getText()));)- Параметры:
-
newValue— значение, введённое пользователем, которое следует сохранить соответствующим образом, учитывая источник данных, лежащий в основе пользовательского интерфейса, и обработчик подтверждения редактирования элемента управления пользовательского интерфейса.
- Отправить соответствующие события обратно в управляющий элемент пользовательского интерфейса (например,
-
layoutChildren
protected void layoutChildren()
Вызывается во время прохода компоновки для компоновки дочерних элементов в этойParent. По умолчанию он только устанавливает размер управляемого, масштабируемого содержимого до их предпочтительных размеров и не выполняет позиционирование узлов.Подклассы должны переопределять эту функцию для компоновки содержимого по мере необходимости.
- Переопределяет:
-
layoutChildrenв классеControl
-
updateItem
protected void updateItem(T item, boolean empty)
Метод updateItem не должен вызываться разработчиками, но это лучший метод для переопределения разработчиками, чтобы они могли настроить визуальные элементы ячейки. Для уточнения, разработчики никогда не должны вызывать этот метод в своём коде (они должны позволить элементу управления пользовательским интерфейсом, например элементу управленияListView, вызвать этот метод). Однако цель метода updateItem заключается в том, чтобы разработчики, при указании пользовательских фабрик ячеек (снова, как ListViewcell factory), могли переопределить метод updateItem, чтобы разрешить полную настройку ячейки.Очень важно, чтобы подклассы ячеек правильно переопределяли метод updateItem, так как отсутствие этого приведёт к проблемам, таким как пустые ячейки или ячейки с неожиданным содержимым.
protected void updateItem(T item, boolean empty) { super.updateItem(item, empty); if (empty || item == null) { setText(null); setGraphic(null); } else { setText(item.toString()); } }Обратите внимание на два важных момента в этом примере кода:
- Мы вызываем метод super.updateItem(T, boolean). Если этого не сделать, свойства item и empty не устанавливаются правильно, и у вас, вероятно, возникнут графические проблемы.
- Мы проверяем условие
empty, и если оно истинно, мы устанавливаем свойства text и graphic в null. Если этого не сделать, практически гарантированно, что конечные пользователи увидят графические артефакты в ячейках непредвиденным образом.
- Параметры:
-
item- новый элемент для ячейки. -
empty- является ли эта ячейка данными из списка. Если она пуста, она не представляет какие-либо данные домена, а используется для отображения пустой строки.
-
updateSelected
public void updateSelected(boolean selected)
Обновляет, находится ли эта ячейка в состоянии выбора.- Параметры:
-
selected- выбрать или отменить выбор этой ячейки.
-
isItemChanged
protected boolean isItemChanged(T oldItem, T newItem)
Этот метод вызывается подклассами ячеек, чтобы определённые действия, требующие значительных вычислений (конкретно, вызовupdateItem(Object, boolean)) выполнялись только при необходимости (то есть они выполняются только тогда, когда текущее установленное значениеitemсчитается отличным от предлагаемого нового элемента, который может быть установлен).По умолчанию этот метод проверяет равенство, но разработчики могут переопределить этот метод, чтобы выполнить проверки другим способом, специфичным для их домена.
- Параметры:
-
oldItem- текущий установленный элемент, содержащийся в ячейке (то есть, он такой же, как и доступен черезgetItem()). -
newItem- элемент, который будет установлен в ячейку, если этот метод возвращает true. Если этот метод возвращает false, он может не быть установлен. - Возвращает:
- Возвращает true, если новый элемент считается отличным от старого. По умолчанию этот метод проверяет равенство, но подклассы могут изменить реализацию, чтобы проверить это соответствующим образом.
- С тех пор:
- JavaFX 8u40
-
-
getInitialFocusTraversable
protected Boolean getInitialFocusTraversable()
Возвращает начальное состояние фокусируемого элемента управления для использования движком JavaFX CSS для правильной установки его начального значения. Этот метод переопределён, так как по умолчанию элементы управления пользовательского интерфейса имеют фокусируемое состояние по умолчанию, установленное в true, но это не подходит для данного элемента управления.- Overrides:
-
getInitialFocusTraversableв классеControl - Возвращает:
- начальное состояние фокусируемого элемента управления
- Since:
- 9
-
© 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.