JavaFX - 我有一个带有方法(和其他功能)public String getName()
的类Record。我有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
这样的名字,那将是不幸的:
Record record = listview.getSelectionModel().getSelectedItem();
record.setName("New Name");
列表视图中的单元格文本不会更改。我该怎么做才能解决这个问题?或者我如何以不同方式更改单元格的文本?
答案 0 :(得分:2)
最好(或大多数JavaFX-ish)方法是将Record类的名称公开为属性并将ListCell的textProperty绑定到它。假设您的记录有方法nameProperty()
返回StringPropery
的实例,您可以替换该行
setText(item.getName());
与
textProperty().bind(item.nameProperty());