1 回答
TA贡献1810条经验 获得超4个赞
您使用了原始类型,这使得编译成为可能,但在运行时发生了类型不一致。您routeColorCol
应该显示javafx.scene.paint.Color
值,但您的单元工厂回调被写入读取String
值 - 这就是导致ClassCastException
运行时的原因。
来自TextFieldTableCell.forTableColumn()
:
提供一个 TextField,允许在双击单元格时编辑单元格内容,或者在调用 TableView.edit(int, javafx.scene.control.TableColumn) 时编辑单元格内容。此方法仅适用于 String 类型的 TableColumn 实例。
您应该使用重载方法TextFieldTableCell.forTableColumn(StringConverter)
。
routeColorCol.setCellFactory(
TextFieldTableCell.<Foo, Color> forTableColumn(new StringConverter<Color>() {
@Override
public String toString(Color object) {
return object != null ? object.toString() : "";
}
@Override
public Color fromString(String string) {
return Color.valueOf(string);
}
}
));
添加回答
举报