1 回答

TA貢獻1810條經驗 獲得超4個贊
您使用了原始類型,這使得編譯成為可能,但在運行時發(fā)生了類型不一致。您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);
}
}
));
添加回答
舉報