Witam
Mam problem z podbindowaniem pola imie z obiektu klasy Osoba. Tekst w obu textfieldach powinien na bieżąco się synchronizować, ale niestety tak nie jest. Co robię źle? Dzięki za pomoc.
package beansbindingtest;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import java.beans.PropertyChangeSupport;
class Osoba {
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private String imie = "Adam";
public String getImie() {
return imie;
}
public void setImie(String imie) {
String old = this.imie;
this.imie = imie;
changeSupport.firePropertyChange("imie", old, imie);
System.out.println("setImie");
}
}
/**
* The application's main frame.
*/
public class BeansBindingTestView extends FrameView {
private Osoba nazwa;
public Osoba getNazwa() {
return nazwa;
}
public void setNazwa(Osoba nazwa) {
Osoba old = this.nazwa;
this.nazwa = nazwa;
firePropertyChange("nazwa", old, nazwa);
System.out.println("setNazwa");
}
public BeansBindingTestView(SingleFrameApplication app) {
super(app);
initComponents();
setNazwa(new Osoba());
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
mainPanel = new javax.swing.JPanel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
mainPanel.setName("mainPanel"); // NOI18N
mainPanel.setLayout(new java.awt.BorderLayout());
jTextField1.setName("jTextField1"); // NOI18N
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${nazwa.imie}"), jTextField1, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
mainPanel.add(jTextField1, java.awt.BorderLayout.NORTH);
jTextField2.setName("jTextField2"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${nazwa.imie}"), jTextField2, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
mainPanel.add(jTextField2, java.awt.BorderLayout.SOUTH);
jLabel1.setName("jLabel1"); // NOI18N
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${nazwa.imie}"), jLabel1, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
mainPanel.add(jLabel1, java.awt.BorderLayout.CENTER);
setComponent(mainPanel);
bindingGroup.bind();
}//
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JPanel mainPanel;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration
}