小编JJ *_*man的帖子

如何定义 ListView 应该使用哪个属性来呈现

我有一个 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)

java listview javafx

5
推荐指数
1
解决办法
2354
查看次数

标签 统计

java ×1

javafx ×1

listview ×1