我有一个TextFieldTableCell<Item,String>
,我需要验证,所以不能使用在通用回调没有推理的JavaFX
column.setCellFactory(TextFieldTableCell.forTableColumn());
通常的方式,使我的意图是要像做
column.setCellFactory(param -> {
TableCell<Item,String> cell = TextFieldTableCell.forTableColumn().call(params);
validate(validationRules, cell);
});
但是它说,
CallbackTableColumn<Object,String>,TableCell<Object,String> cannot be
applied to TableColumn<Item,String>
我得到的,我不明白的是应该把它推断出类型,而不是Object
我发现的唯一解决方法是定义一个新的StringConverter<String>
,这似乎有点令人厌恶。
new StringConverter<String>() {
@Override
public String toString(String object) {
return object;
}
@Override
public String fromString(String string) {
return string;
}
}
我觉得你还是可以使用TextFieldTableCell.forTableColumn()。在你的setOnEditCommit中,你应该能够验证你的数据。 – Sedrick
没错,但验证应该在开始之前开始编辑 –
为什么不使用TableCell- cell = new TextFieldTableCell <>();'虽然? –