我正在使用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;
    }
});

10-08 17:10