gpt4 book ai didi

java - 具有数据验证和 Beans 绑定(bind)的 JtextField

转载 作者:行者123 更新时间:2023-12-02 08:24:46 26 4
gpt4 key购买 nike

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

public class TestValidationBinding {    private JTextField field;    private ModelVo modelVo;    public TestValidationBinding() {        field = new JTextField();        modelVo = new ModelVo();        field.setDocument(new PlainDocument() {            private static final long serialVersionUID = 1L;            @Override            public void insertString(int offs, String str, AttributeSet a)                    throws BadLocationException {                // other validation for key typing, check length                int limit = 15;                if (str == null) {                    return;                }                if ((getLength() + str.length()) <= limit) {                    super.insertString(offs, str, a);                }            }        });        Property srcProperty = BeanProperty.create("text");        Property tgtProperty = BeanProperty.create("text");        AutoBinding binding = Bindings                .createAutoBinding(UpdateStrategy.READ_WRITE, field,                        srcProperty, modelVo, tgtProperty);        binding.bind();    }}

ModelVO 类是:

public class ModelVo {    private String text;    public String getText() {        return text;    }    public void setText(String text) {        System.out.println("Text is:" + text);        this.text = text;    }}

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

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

最佳答案

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

关于java - 具有数据验证和 Beans 绑定(bind)的 JtextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4756397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com