我有一个 java bean 对象列表,我想在 ListView 控件中显示它。默认情况下,ListView 使用 toString 方法。
如何定义用于在 ListView 中呈现的属性?
我想实现与 TableView 中相同的功能,可以通过以下代码中的 PropertyValueFactory 实现:
@FXML
private TableView<Person> mainTableView;
//...
TableColumn<Person,String> personColumn = new TableColumn<>("Name");List
personColumn.setCellValueFactory(new PropertyValueFactory("name"));
mainTableView.getColumns().add(personColumn);
Run Code Online (Sandbox Code Playgroud)
编辑
看起来没有简单的(开箱即用的)解决方案。基于 James_D 的代码,我创建了泛型类来处理这个问题。它包装了 PropertyValueFactory - 请注意,PropertyValueFactory 首先寻找方法 [NAME]Property() 试图获得可观察性,只有在找不到时才尝试访问标准 bean 属性。
public class PropertyValueFactoryWrapperCellFactory<T> implements Callback<ListView<T>, ListCell<T>> {
private final PropertyValueFactory<T, String> pvf;
public PropertyValueFactoryWrapperCellFactory(String propertyName) {
super();
pvf = new PropertyValueFactory(propertyName);
}
@Override
public ListCell<T> call(ListView<T> param) {
return new ListCell<T>() {
@Override
public void updateItem(T item, boolean …Run Code Online (Sandbox Code Playgroud)