【发布时间】:2014-05-28 01:18:27
【问题描述】:
我打算在单击 TableView 上的其他位置时提交对 TableCell 的更改。这是我在 Oracle 教程中实现的 createTextField 方法。
private void createTextField() {
textField.setText(getString());
textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);
textField.addEventFilter(KeyEvent.KEY_PRESSED, (KeyEvent t) -> {
if (t.getCode() == KeyCode.ENTER || t.getCode() == KeyCode.TAB) {
commitEdit(textField.getText());
} else if (t.getCode() == KeyCode.ESCAPE) {
cancelEdit();
}
});
textField.focusedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean t0, Boolean t1) -> {
if(!t1)
commitEdit(textField.getText());
});
}
当我单击其他表格单元格时,更新的字符串不会反映。我正在使用 Java 8b123。
【问题讨论】:
-
通过单击任何其他 TabeCell,编辑将被丢弃。知道为什么会这样吗?
-
默认行为是在焦点更改时调用
cancelEdit()。详细说明见stackoverflow.com/a/25291137/132374。