我打算在单击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());
});
}
当我点击其他一些tablecell时,更新的字符串不会反映出来。我使用的是Java 8b123。