Java 将JText字段值绑定到Info类

Java 将JText字段值绑定到Info类,java,swing,data-binding,jtextfield,documentlistener,Java,Swing,Data Binding,Jtextfield,Documentlistener,有没有办法将Swing JTextFields自动绑定到Info类。e、 g private JTextField receiptId; private JTextField Id; public class Info { private string receiptId; private String id; // Getters and Setters } 当我从Swing页面输入值,然后自动将值绑定到我的信息类时,有什么方法吗?之后,我可以将信息对象传递给其他

有没有办法将Swing JTextFields自动绑定到Info类。e、 g

 private JTextField receiptId;
 private JTextField Id;


 public class Info {
  private string receiptId;
  private String id;

  // Getters and Setters
  }

当我从Swing页面输入值,然后自动将值绑定到我的信息类时,有什么方法吗?之后,我可以将信息对象传递给其他类,而不是发送所有文本字段。

此“绑定”通常使用


从注册到每个
JTextFields
的侦听器中调用setter
Info.setReceiptId()
Info.setId()
,这里有一个用于复制粘贴的工作解决方案:)

这就是做魔术的听众……)

假设您的模型对象看起来像下面的类

public class ModelObject {
    private String field1;
    private String field2;

    /**
     * @return the field1
     */
    public String getField1() {
        return field1;
    }

    /**
     * @param field1
     *            the field1 to set
     */
    public void setField1(String field1) {
        this.field1 = field1;
    }

    /**
     * @return the field2
     */
    public String getField2() {
        return field2;
    }

    /**
     * @param field2
     *            the field2 to set
     */
    public void setField2(String field2) {
        this.field2 = field2;
    }

    @Override
    public String toString() {
        return "ModelObject [field1=" + field1 + ", field2=" + field2 + "]";
    }
}
假设您的GUI正在处理这样的代码

JTextField textField1 = new JTextField();
textField1.setPreferredSize(new Dimension(100, 25));
JTextField textField2 = new JTextField();
textField2.setPreferredSize(new Dimension(100, 25));
panel.add(textField1);
panel.add(textField2);

ModelObject model = new ModelObject();

textField1.getDocument().addDocumentListener(new BindingListener(model, "field1"));
textField2.getDocument().addDocumentListener(new BindingListener(model, "field2"));
更新:这里还有一些示例输出

Entered text: x
Field to be updated: Field1
Old model values: ModelObject [field1=null, field2=null]
New model values: ModelObject [field1=x, field2=null]
Entered text: y
Field to be updated: Field2
Old model values: ModelObject [field1=x, field2=null]
New model values: ModelObject [field1=x, field2=y]

回答得好。我在我的帖子中为你的想法添加了一个可行的解决方案。不确定我是否能以任何方式将我的答案与你的答案联系起来。
Entered text: x
Field to be updated: Field1
Old model values: ModelObject [field1=null, field2=null]
New model values: ModelObject [field1=x, field2=null]
Entered text: y
Field to be updated: Field2
Old model values: ModelObject [field1=x, field2=null]
New model values: ModelObject [field1=x, field2=y]