JavaFX 2:在TableCell中保存编辑 [英] JavaFX 2: Save edit in TableCell

查看:207
本文介绍了JavaFX 2:在TableCell中保存编辑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的JavaFX程序中,我使用了一个可以编辑值的TableCell。如JavaFX页面上的示例所示, 示例,我使用此函数保存更改(在编辑单元格中的TextField上设置功能)

In my JavaFX-program I use a TableCell where you can edit a value. Like shown at the examples on the JavaFX-page "Example", I use this function to save the changes (function is set on TextField in edit Cell)

textField.setOnKeyReleased(new EventHandler<KeyEvent>() {
    @Override public void handle(KeyEvent t) {
    if (combo.match(t)) {
        commitEdit(textField.getText());
    } else if (t.getCode() == KeyCode.ESCAPE) {
        cancelEdit();
    }
 }

当使用ENTER离开单元格时,值被更改/保存,但是如何在离开单元格时更改/保存值点击另一个单元格?实际上该值已重置。

When using ENTER to leave the cell, the value is changed / saved, but how can I change / save the value, when leaving the cell by clicking in another cell? Actually the value is resetted.

谢谢
Basti

Thanks Basti

推荐答案

听一下TextField上的焦点变化是一种方式..我在的focusedProperty中添加了一个监听器文本域。 Oracle的例子没有包括这个。

Listening to a change in focus on the TextField is one way.. I added a listener to the focusedProperty of the textField. The example from Oracle didn't include this. [edit - here is a link to another question that has a different approach UITableView - Better Editing through Binding? ]

private void createTextField() {
        textField = new TextField(getItem());
        textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);

        // Detect a change in focus on the text field.. If we lose the focus we take appropriate action
        textField.focusedProperty().addListener(new ChangeListener<Boolean>() {
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                if(!newValue.booleanValue())
                    commitEdit(textField.getText());
            }
        } );
        textField.setOnKeyReleased(new EventHandler<KeyEvent>() {
            @Override public void handle(KeyEvent t) {
                if (t.getCode() == KeyCode.ENTER) {
                    commitEdit(textField.getText());
                } else if (t.getCode() == KeyCode.ESCAPE) {
                    cancelEdit();
                }
            }
        });
    }

这篇关于JavaFX 2:在TableCell中保存编辑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆