Spec-Zone.ru › OpenJavaFX 24

Класс PropertyValueFactory<S,T>

java.lang.Object
javafx.scene.control.cell.PropertyValueFactory<S,T>
Параметры типа:
S - Тип класса, содержащегося в списке TableView.items.
T - Тип класса, содержащегося в ячейках TableColumn.
Все реализованные интерфейсы:
Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>
public class PropertyValueFactory<S,T> extends Object implements Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>
Удобная реализация интерфейса Callback, разработанная специально для использования в TableColumn cell value factory. Пример использования этого класса:

 TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
 firstNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("firstName"));
 

В этом примере, Person - тип класса элементов списка TableView items. Класс Person должен быть объявлен public. PropertyValueFactory использует аргумент конструктора, "firstName", для предположения, что Person имеет public метод firstNameProperty без формальных параметров и возвращающим типом ObservableValue<String>.

Если такой метод существует, то он вызывается, и дополнительно предполагается, что он возвращает экземпляр Property<String>. Возвращаемое значение используется для заполнения TableCell. Кроме того, TableView добавляет наблюдателя к возвращаемому значению, таким образом, любые сгенерированные изменения будут наблюдаться TableView, что приведет к немедленному обновлению ячейки.

Если такого метода не существует, то PropertyValueFactory предполагает, что Person имеет public метод getFirstName или isFirstName без формальных параметров и возвращающим типом String. Если такой метод существует, то он вызывается, а его возвращаемое значение оборачивается в ReadOnlyObjectWrapper и возвращается в TableCell. В этом случае TableCell не сможет наблюдать за изменениями свойства, в отличие от первого подхода выше.

Для справки (и как отмечено в документации TableColumn TableColumn.cellValueFactoryProperty() фабрики создания значений ячеек), подробный код выше будет следующим:


 TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
 firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
     public ObservableValue<String> call(CellDataFeatures<Person, String> p) {
         // p.getValue() returns the Person instance for a particular TableView row
         return p.getValue().firstNameProperty();
     }
  });
 }
 

Развёртывание приложения как модуля

Если указанный класс находится в именованном модуле, то он должен быть рефлективно доступен модулю javafx.base. Класс рефлективно доступен, если модуль opens содержащий пакет по крайней мере для модуля javafx.base. В противном случае метод call(TableColumn.CellDataFeatures) выведет предупреждение и вернёт null.

Например, если класс Person находится в пакете com.foo в модуле foo.app, то module-info.java может выглядеть так:

module foo.app {
    opens com.foo to javafx.base;
}

Или, класс рефлективно доступен, если модуль exports содержащий пакет безусловно.

С момента:
JavaFX 2.0
См. также:
  • TableColumn
  • TableView
  • TableCell
  • TreeItemPropertyValueFactory
  • MapValueFactory

Краткое описание конструкторов

Конструктор Описание
PropertyValueFactory(String property)
Создаёт фабрику PropertyValue для извлечения значения из строки элемента TableView рефлективно, используя указанное имя свойства.

Краткое описание методов

Модификатор и тип Метод Описание
ObservableValue<T> call(TableColumn.CellDataFeatures<S,T> param)
Метод call вызывается по мере необходимости и получает единственный аргумент типа P с требованием вернуть объект типа R.
final String getProperty()
Возвращает имя свойства, предоставленное в конструкторе.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

PropertyValueFactory

public PropertyValueFactory(String property)
Создаёт фабрику PropertyValue для извлечения значения из строки элемента TableView рефлективно, используя указанное имя свойства.
Параметры:
property - Имя свойства, с помощью которого пытаться рефлективно извлечь соответствующее значение в заданном объекте.

Подробное описание методов

call

public ObservableValue<T> call(TableColumn.CellDataFeatures<S,T> param)
Метод call вызывается по мере необходимости и получает единственный аргумент типа P с требованием вернуть объект типа R.
Задано в:
call в интерфейсе Callback<S,T>
Параметры:
param - Единственный аргумент, на основе которого должно быть определено возвращаемое значение.
Возвращает:
Объект типа R, который может быть определён на основе предоставленного значения параметра.

getProperty

public final String getProperty()
Возвращает имя свойства, предоставленное в конструкторе.
Возвращает:
имя свойства, предоставленное в конструкторе

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

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

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