我正在使用JavaFX制作密码管理器,并且将用户帐户中的所有相关信息保存在列表视图中,他们可以选择列表中的项目以将其显示在右侧的表单上。此时,列表视图仅显示与正在保存的对象相关的文本。我想显示帐户信息所针对的网站的名称。我在AccountInfo类上有一个getSiteName()方法,但是我不知道如何在列表视图中设置文本。在这里寻找一些指导!谢谢。
最佳答案
您应该设置一个csutom Cell Factory并通过覆盖updateItem
方法来覆盖它呈现项目文本的方式:
lv.setCellFactory(new Callback<ListView<AccountInfo>, ListCell<AccountInfo>>() {
@Override
public ListCell<AccountInfo> call(ListView<AccountInfo> param) {
ListCell<AccountInfo> cell = new ListCell<AccountInfo>() {
@Override
protected void updateItem(AccountInfo item, boolean empty) {
super.updateItem(item, empty);
if(item != null) {
setText(item.getSiteName());
} else {
setText(null);
}
}
};
return cell;
}
});