2

JavaFX - 我有一个带有方法(和其他功能)的类 Record public String getName()。我有ListView<Record> listview,这是显示Record名称的代码:

listview.setCellFactory(new Callback<ListView<Record>, ListCell<Record>>() {
    public ListCell<Record> call(ListView<Record> param) {
        final ListCell<Record> cell = new ListCell<Record>() {
            @Override
            public void updateItem(Record item, boolean empty) {
                super.updateItem(item, empty);
                if (item != null) {
                    setText(item.getName());
                }
            }
        };
        return cell;
    }
});

不幸的是,如果我像这样更改Record's 名称:

Record record = listview.getSelectionModel().getSelectedItem();
record.setName("New Name");

列表视图中的单元格文本不会更改。我应该怎么做才能解决这个问题?或者我怎样才能以不同的方式更改单元格的文本?

4

1 回答 1

2

最好的(或大多数 JavaFX 风格的)方法是将 Record 类的名称公开为属性并将 ListCell 的 textProperty 绑定到它。假设您的 Record 有一个nameProperty()返回实例的方法StringPropery,您可以替换该行

setText(item.getName());

textProperty().bind(item.nameProperty());
于 2013-03-23T23:30:58.053 回答