Spec-Zone.ru › OpenJavaFX 11
Модуль javafx.controls
Пакет javafx.scene.control

Класс Cell<T>

  • 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. Ячейка является Labeled Control и используется для отображения одной "строки" внутри 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 существует для всех упомянутых выше элементов управления, и процесс в целом точно такой же):

    1. Пользователь запрашивает ввод в ячейку (через команды клавиатуры или мыши), или разработчик запрашивает, чтобы ячейка перешла в режим редактирования (вызванием метода, такого как ListView edit). Примечание: Если пользователь дважды щелкнет или выполнит соответствующую команду клавиатуры для начала редактирования, он фактически вызывает соответствующий метод редактирования на элементе управления (т. е. метод ввода для редактирования, инициированного пользователем и разработчиком, является одинаковым).
    2. Каждая ячейка в видимой области элемента управления получает уведомление о том, что текущий editing cell изменился, и проверяет, является ли она сама. В этот момент может произойти одно из трёх:
      1. Если индекс редактирования совпадает с индексом ячейки, на этой ячейке будет вызван startEdit(). Некоторые рекомендации:
        1. Рекомендуется, чтобы подклассы Cell переопределяли метод startEdit(), чтобы обновлять визуальное представление ячейки при переходе в состояние редактирования. Однако важно, чтобы подклассы, переопределяющие метод startEdit(), продолжали вызывать super.startEdit(), чтобы родительские классы могли обновлять дополнительное состояние, необходимое для успешного редактирования.
        2. В методе startEdit() идеально подходит время для изменения визуального представления ячейки. Например (и обратите внимание, что этот пример более подробно описан в javadoc для элемента управления интерфейсом ListView и т. д.), вы можете установить Labeled.graphicProperty() ячейки на TextField и установить Labeled.textProperty() в значение null. Это позволит конечным пользователям вводить данные и вносить изменения в вашу модель данных.
        3. Когда пользователь закончит редактирование, он захочет подтвердить или отменить изменения. Вы несете ответственность за обработку этого (например, путем настройки Enter для commit the edit, и клавиши ESC для cancel the edit). Вы делаете это, прикрепляя соответствующие обработчики событий к узлам, которые вы показываете во время редактирования.
      2. Если индекс редактирования не совпадает с индексом ячейки и если ячейка в настоящее время находится в состоянии editing state, на этой ячейке будет вызван cancelEdit(). Как и в случае с методом startEdit(), вы должны переопределить этот метод, чтобы очистить визуальное представление ячейки (и, скорее всего, вернуть Labeled.graphicProperty() обратно к null и установить Labeled.textProperty() в его (возможно, новое) значение. Опять же, убедитесь, что всегда вызываете super.cancelEdit(), чтобы гарантировать правильное обновление всего состояния.
      3. Если индекс редактирования не совпадает с индексом ячейки и если ячейка в настоящее время не находится в состоянии редактирования isEditing(), на этой ячейке ничего не произойдёт.
Since:
JavaFX 2.0
  • Краткое описание свойств

    Свойства
    Тип Свойство Описание
    BooleanProperty editable
    Свойство, представляющее, разрешено ли для данной ячейки входить в состояние редактирования.
    ReadOnlyBooleanProperty editing
    Свойство, представляющее, находится ли данная ячейка в состоянии редактирования.
    ReadOnlyBooleanProperty empty
    Свойство, используемое для представления наличия содержимого в ячейке.
    ObjectProperty<T> item
    Значение данных, ассоциированное с данной ячейкой.
    ReadOnlyBooleanProperty selected
    Указывает, выбрана ли эта ячейка.
    • Наследуемые свойства от класса 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'.
  • Краткое описание методов

    Все методыМетоды экземпляраКонкретные методы
    Модификатор и тип Метод Описание
    void cancelEdit()
    Вызовите эту функцию, чтобы перейти из состояния редактирования в состояние нередактирования, не сохраняя ввод пользователя.
    void commitEdit​(T newValue)
    Вызовите эту функцию, когда это уместно (в зависимости от требований взаимодействия пользователя с интерфейсом редактирования ячейки), чтобы выполнить два действия: Отправить соответствующие события обратно в управляющий элемент пользовательского интерфейса (например,
    BooleanProperty editableProperty()
    Свойство, определяющее, разрешено ли этой ячейке переходить в состояние редактирования.
    ReadOnlyBooleanProperty editingProperty()
    Свойство, представляющее, находится ли эта ячейка в состоянии редактирования.
    ReadOnlyBooleanProperty emptyProperty()
    Свойство, используемое для представления наличия содержимого в ячейке.
    protected Boolean getInitialFocusTraversable()
    Возвращает начальное состояние перемещения фокуса этого элемента управления, которое используется движком JavaFX CSS для правильной установки его начального значения.
    T getItem()
    Возвращает значение данных, связанное с этой ячейкой.
    boolean isEditable()
    Возвращает, разрешено ли этой ячейке переходить в состояние редактирования.
    boolean isEditing()
    Представляет, находится ли ячейка в состоянии редактирования или нет.
    boolean isEmpty()
    Возвращает булево значение, представляющее, считается ли ячейка пустой или нет.
    protected boolean isItemChanged​(T oldItem, T newItem)
    Этот метод вызывается подклассами Cell, чтобы определённые действия, требующие значительных вычислений (в частности, вызов updateItem(Object, boolean)), выполнялись только при необходимости (то есть, они выполняются только тогда, когда текущее установленное item считается отличным от предлагаемого нового элемента, который может быть установлен).
    boolean isSelected()
    Возвращает, выбрана ли в данный момент эта ячейка или нет.
    ObjectProperty<T> itemProperty()
    Значение данных, связанное с этой ячейкой.
    protected void layoutChildren()
    Вызывается во время прохода компоновки для компоновки дочерних элементов в этой Parent.
    ReadOnlyBooleanProperty selectedProperty()
    Указывает, выбрана ли эта ячейка или нет.
    void setEditable​(boolean value)
    Разрешает некоторым ячейкам не допускать редактирования.
    void setItem​(T value)
    Устанавливает элемент в заданное значение — не следует вызывать напрямую, так как элемент управляется виртуализированным элементом управления.
    void startEdit()
    Вызовите эту функцию, чтобы перейти из состояния нередактирования в состояние редактирования, если ячейка разрешает редактирование.
    protected void updateItem​(T item, boolean empty)
    Метод updateItem не должен вызываться разработчиками, но он является лучшим методом для переопределения разработчиками, чтобы позволить им настроить визуализацию ячейки.
    void updateSelected​(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 требует, чтобы свойство ListView editable также было 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 требуется, чтобы свойство ListView editable также было true.
      См. также:
      isEditable(), setEditable(boolean)
    • startEdit

      public void startEdit()
      Вызовите эту функцию, чтобы перейти из состояния без редактирования в состояние редактирования, если ячейка редактируема. Если эта ячейка уже находится в состоянии редактирования, она останется в нём.
    • cancelEdit

      public void cancelEdit()
      Вызовите эту функцию, чтобы перейти из состояния редактирования в состояние без редактирования, не сохраняя введённый пользователем ввод.
    • commitEdit

      public void commitEdit​(T newValue)
      Вызовите эту функцию при необходимости (в соответствии с требованиями взаимодействия пользователя в вашем пользовательском интерфейсе редактирования ячеек), чтобы сделать две вещи:
      1. Отправить соответствующие события обратно в управляющий элемент пользовательского интерфейса (например, ListView). Это начнёт процесс отправки этого изменения обратно в соответствующий источник данных/свойство (хотя это не гарантирует, что это будет успешно — это зависит от конкретного обработчика подтверждения редактирования, используемого). Дополнительные сведения см. в документации к классу элемента управления пользовательского интерфейса.
      2. Начать переход из состояния редактирования в состояние без редактирования.

      В общем случае нет необходимости переопределять этот метод в реализациях пользовательских ячеек — должно быть достаточно просто вызвать этот метод при необходимости (например, при нажатии пользователем клавиши 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 заключается в том, чтобы разработчики, при указании пользовательских фабрик ячеек (снова, как ListView cell 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());
           }
       }
       

      Обратите внимание на два важных момента в этом примере кода:

      1. Мы вызываем метод super.updateItem(T, boolean). Если этого не сделать, свойства item и empty не устанавливаются правильно, и у вас, вероятно, возникнут графические проблемы.
      2. Мы проверяем условие 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API