您的位置:首页 > 编程语言 > Java开发

javaFX table表格可编辑失去焦点提交

2017-09-29 16:03 821 查看
代码如下

public class EditingCell<T> extends TableCell<T, String> {

    private TextField textField;

    public EditingCell() {

    }

    @Override

    public void startEdit() {

        if (!isEmpty()) {

            super.startEdit();

            createTextField();

            setText(null);

            setGraphic(textField);

            textField.selectAll();

        }

    }

    @Override

    public void cancelEdit() {

        super.cancelEdit();

        setText((String) getItem());

        setGraphic(null);

    }

    @Override

    public void updateItem(String item, boolean empty) {

        super.updateItem(item, empty);

        if (empty) {

            setText(null);

            setGraphic(null);

        } else {

            if (isEditing()) {

                if (textField != null) {

                    textField.setText(getString());

                }

                setText(null);

                setGraphic(textField);

            } else {

                setText(getString());

                setGraphic(null);

            }

        }

    }

    private void createTextField() {

        textField = new TextField(getString());

        textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);

        textField.focusedProperty().addListener((ob, old, now) -> {

            if (!now) {

                commitEdit(textField.getText());

            }

        });

    }

    private String getString() {

        return getItem() == null ? "" : getItem().toString();

    }

}

最后给你要设置的列

要设置的列.setCellFactory((TableColumn<T,String> p) -> new EditingCell<T>()) ;

就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐