Spec-Zone.ru › OpenJavaFX 21

Класс 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() cell value factory) полный код выше будет следующим:


 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)
Создает стандартный PropertyValueFactory для извлечения значения из строки элемента 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)
Создает стандартный PropertyValueFactory для извлечения значения из строки элемента 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 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