0

我正在尝试将 JTextfield 与文本验证绑定,然后将其绑定到 pojo 模型。我的目标是允许用户键入具有特定文本长度的某些允许字符集,并使用绑定在模型中设置文本。代码片段如下所示。

公共类 TestValidationBinding {
    私有 JTextField 字段;
    私有模型Vo modelVo;

    公共TestValidationBinding(){
        字段 = 新的 JTextField();
        modelVo = 新的 ModelVo();
        field.setDocument(new PlainDocument() {
            私有静态最终长序列版本UID = 1L;

            @覆盖
            public void insertString(int offs, String str, AttributeSet a)
                    抛出 BadLocationException {
                // 其他验证键输入,检查长度
                整数限制 = 15;
                如果(str == null){
                    返回;
                }

                if ((getLength() + str.length()) <= 限制) {
                    super.insertString(offs, str, a);
                }
            }
        });

        属性 srcProperty = BeanProperty.create("text");
        属性 tgtProperty = BeanProperty.create("text");
        自动绑定绑定 = 绑定
                .createAutoBinding(UpdateStrategy.READ_WRITE,字段,
                        srcProperty,modelVo,tgtProperty);
        绑定.bind();

    }
}

ModelVO 类是:

公共类 ModelVo {
    私有字符串文本;

    公共字符串 getText() {
        返回文本;
    }

    公共无效setText(字符串文本){
        System.out.println("文本为:" + text);
        this.text = 文本;
    }
}

我正在使用 AspectJ 在 ModalVO 类中触发必要的属性更改。(按照此链接实现此目的:: http: //yakafokon.wordpress.com/2008/12/02/beans-binding-jsr-295-with-pojo-and-aop/#comments)。

现在,我的问题是,如果我不使用绑定,验证会正确完成,但文本未以模式设置。但是如果我绑定文本字段,文本会在模型中正确设置,但验证不起作用。当我同时使用验证和绑定时,谁能提供见解为什么它不起作用?

4

2 回答 2

1

尝试使用javax.swing.text.DocumentFilter而不是extendint PlainDocument

于 2011-01-21T09:29:21.057 回答
1

如果您使用绑定,请尝试覆盖replace方法而不是。insertString

于 2011-07-27T10:11:33.097 回答