Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编辑TextFieldListCell时,将显示相应的类_Java_Listview_Javafx - Fatal编程技术网

Java 编辑TextFieldListCell时,将显示相应的类

Java 编辑TextFieldListCell时,将显示相应的类,java,listview,javafx,Java,Listview,Javafx,我有以下代码用于编辑ListView中的单元格: listView.setCellFactory(new Callback<ListView<TextModule>, ListCell<TextModule>>() { @Override public ListCell<TextModule> call(ListView<TextModule> param) { TextFieldListCell<TextModule

我有以下代码用于编辑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.setCellFactory(新回调(){
@覆盖公共ListCell调用(ListView参数){
TextFieldListCell textCell=新TextFieldListCell(){
@重写公共void updateItem(TextModule项,布尔空){
super.updateItem(项,空);
如果(项!=null){
setText(item.getSummary());
}
否则{
setText(空);
}
}
};
返回文本单元格;
}
});

现在的问题是,如果我通过双击在
列表视图中输入任何单元格,我可以编辑该单元格,但属性(显示的文本)会更改为类定义,如
com.test.tools.tbm.model。TextModule@179326d
。通常,它会显示“Hello World”等文本。

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

或者,您也可以提供自己的
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);
        }

    }));
listView.setCellFactory(TextFieldListCell.forListView(新的StringConverter()){
@凌驾
公共字符串到字符串(TextModule项){
return item.getSummary();
}
@凌驾
公共文本模块fromString(字符串){
返回新的文本模块(字符串);
}
}));
class TextModule {
    private final String summary;

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

    public String getSummary(){ return summary; }

    @Override
    public String toString(){
        return summary;
    }
}
    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);
        }

    }));