【发布时间】:2014-09-26 18:15:45
【问题描述】:
我想创建一个 Cell 工厂,它返回一个行为与 TextFieldTableCell 完全相同的 TableCell,但有以下区别:当它失去焦点时,它会提交更改。
我的代码很简单:
public final class TextFieldCellFactory<S, T> implements Callback<TableColumn<S, T>, TableCell<S, T>> {
@Override
public TableCell<S, T> call(TableColumn<S, T> p) {
class EditingCell extends TextFieldTableCell {
public EditingCell() {
super();
setConverter(new DefaultStringConverter());
focusedProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
System.out.println("changed!");
System.out.println("getText() = " + getText());
System.out.println("textProperty() = " + textProperty().get());
System.out.println("getItem = " + getItem());
}
});
}
@Override
public void startEdit() {
super.startEdit();
}
@Override
public void cancelEdit() {
super.cancelEdit();
}
}
return new EditingCell();
}
}
如您所见,我在focusedProperty 中添加了一个更改监听器。问题是没有调用 change 方法(没有打印任何内容)。
如何获得所需的行为?谢谢。
【问题讨论】:
标签: javafx-8