3 import javafx.event.EventHandler;
4 import javafx.scene.control.TextField;
5 import javafx.scene.control.TreeCell;
6 import javafx.scene.input.KeyCode;
7 import javafx.scene.input.KeyEvent;
11 public class TextFieldTreeCellImpl extends TreeCell<String> {
13 private TextField textField;
15 public TextFieldTreeCellImpl() {
19 public void startEdit() {
22 if (textField == null) {
26 setGraphic(textField);
27 textField.selectAll();
31 public void cancelEdit() {
33 setText((String) getItem());
34 setGraphic(getTreeItem().getGraphic());
38 public void updateItem(String item, boolean empty) {
39 super.updateItem(item, empty);
46 if (textField != null) {
47 textField.setText(getString());
50 setGraphic(textField);
53 setGraphic(getTreeItem().getGraphic());
58 private void createTextField() {
59 textField = new TextField(getString());
60 textField.setOnKeyReleased(new EventHandler<KeyEvent>() {
63 public void handle(KeyEvent t) {
64 if (t.getCode() == KeyCode.ENTER) {
65 commitEdit(textField.getText());
66 } else if (t.getCode() == KeyCode.ESCAPE) {
73 private String getString() {
74 return getItem() == null ? "" : getItem().toString();