1

データバインディングを使用して 2 つの Eclipse パーツを同期する際に問題が見つかりました。テキスト ボックスを含む 2 つのパーツ クラス間で 1 つのモデルを使用し、両方のクラスがそのモデルにバインドします。

パート 1 の場合:

DataBindingContext databindingcontext = new DataBindingContext();
textLeft = new Text(parent, SWT.BORDER);
textLeft.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
IObservableValue iobservableModel = PojoProperties.value("name").observe(new Name());
IObservableValue observablevalueLeft = WidgetProperties.text (SWT.Modify).observe(textLeft);
databindingcontext.bindValue (observablevalueLeft,iobservableModel);    

モデル:

public class Name {
    public static String static_strName;

    public String getName() {
        return static_strName;
      }

      public void setName(String name) {
        static_strName = name;
      }
}

パート 2:

DataBindingContext m_databindingcontext = new DataBindingContext();
textPart2 = new Text(parent, SWT.BORDER);
textPart2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
IObservableValue iobservableModel = PojoProperties.value("name").observe(new Name());
IObservableValue observablevaluePart2 = WidgetProperties.text (SWT.Modify).observe(textPart2);
m_databindingcontext.bindValue (observablevaluePart2,iobservableModel);       
4

1 に答える 1

0

これを試してください: PropertyChangeSupport が必要です

DataBindingContext bindingContext = new DataBindingContext();
textLeft = new Text(parent, SWT.BORDER);
textLeft.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
IObservableValue observablevalueLeft = SWTObservables.observeText(textLeft ,                    SWT.Modify);
IObservableValue iobservableModel = BeansObservables.observeValue(modelChangeRegistry,     "name");
bindingContext.bindValue(iobservableModel, iobservableModel , null, null);

public class Name extends AbstractPropertyRegistration {

    public static String static_strName;
        public String getName() {
        return static_strName;
    }
    public void setName(String name) {
       static_strName = name;
    }
}

public abstract class AbstractPropertyRegistration {
private final PropertyChangeSupport propertyChangeSupport = new       PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}
public void addPropertyChangeListener(String propertyName, PropertyChangeListener   listener) {
propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}

public void removePropertyChangeListener(String propertyName, PropertyChangeListener   listener) {
propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
}

protected void firePropertyChange(String propertyName, Object oldValue, Object   newValue) {
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
}
于 2013-09-28T15:55:43.510 に答える