java - 编辑 TextFieldListCell 时会显示相应的类

标签 java listview javafx

我有以下代码用于编辑 ListView 中的单元格:

listView.setCellFactory(new Callback<ListView<TextModule>, ListCell<TextModule>>() {
  @Override public ListCell<TextModule> call(ListView<TextModule> param) {
    TextFieldListCell<TextModule> textCell = new TextFieldListCell<TextModule>() {
      @Override public void updateItem(TextModule item, boolean empty) {
        super.updateItem(item, empty);
        if (item != null) {
          setText( item.getSummary());
        }
        else {
          setText(null);
        }
      }
    };
    return textCell;
  }
});

现在的问题是,如果我双击 ListView 中输入任何单元格,我可以编辑该单元格,但属性(显示的文本)将更改为类定义,例如com.test.tools.tbm.model.TextModule@179326d。通常它会显示类似“Hello World”或其他内容的文本。

最佳答案

如果您没有为 TextFieldListCell 提供适当的字符串转换器,它将使用默认实现(来自 CellUtils):

private static <T> String getItemText(Cell<T> cell, StringConverter<T> converter) {
    return cell.getItem().toString();
}

在您的案例中显示com.test.tools.tbm.model.TextModule@179326d,因为cell.getItem()返回TextModule<的实例.

因此您需要在 TextModule 类中重写 toString()

class TextModule {
    private final String summary;

    public TextModule(String summary){
        this.summary=summary;
    }

    public String getSummary(){ return summary; }

    @Override
    public String toString(){
        return summary;
    }
}

或者您也可以提供自己的StringConverter:

    listView.setCellFactory(TextFieldListCell.forListView(new StringConverter<TextModule>(){

        @Override
        public String toString(TextModule item) {
            return item.getSummary();
        }

        @Override
        public TextModule fromString(String string) {
            return new TextModule(string);
        }

    }));

关于java - 编辑 TextFieldListCell 时会显示相应的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441384/

相关文章:

android - notifyDataSetChanged() 不工作或触发?

java - Mac 上缺少 JavaFX 的 OpenFilesEvent

java - 这个像素渲染算法发生了什么?

Java 泛型 - 桥接方法?

Android listview,显示列表的用户末尾,然后自动滚动到顶部

java - 在 JavaFX 中为 Canvas 创建一个 "shadow"层?

java - 使用 Javafxpackager 添加多个依赖的 Jars

java - 解析整数时抛出 NumberFormatException

java - Gradle Java 控制台应用程序

android - 通过代码使 ListView 项发光