Java 将JText字段值绑定到Info类
有没有办法将Swing JTextFields自动绑定到Info类。e、 gJava 将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页面输入值,然后自动将值绑定到我的信息类时,有什么方法吗?之后,我可以将信息对象传递给其他
private JTextField receiptId;
private JTextField Id;
public class Info {
private string receiptId;
private String id;
// Getters and Setters
}
当我从Swing页面输入值,然后自动将值绑定到我的信息类时,有什么方法吗?之后,我可以将信息对象传递给其他类,而不是发送所有文本字段。此“绑定”通常使用
从注册到每个
JTextFields
的侦听器中调用setterInfo.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]