如何在SWT中使用DataBinding启用和禁用按钮

时间:2013-02-01 11:50:14

标签: java eclipse eclipse-plugin swt eclipse-rcp

我使用数据绑定来同步黑白两个按钮。如果一个启用,则其他应该禁用或反之亦然。 在我的代码中,它在开始时工作正常,但是当我更改button2以禁用其他时,不会更改为启用。

问题: 我在这里失踪了什么。?

Button button1 = new Button(parent, SWT.NONE);
button1.setText("hello");
final Button button2 = new Button(parent, SWT.NONE);
button2.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent e) {
         button2.setEnabled(false);
    }
});
button2.setText("world");
ISWTObservableValue observeEnabledButton1 = SWTObservables.observeEnabled(button1);
ISWTObservableValue observeEnabledButton2 = SWTObservables.observeEnabled(button2);
UpdateValueStrategy updateValueStrategy = new UpdateValueStrategy();
updateValueStrategy.setConverter(new IConverter() {
@Override
public Object getToType() {
    return Boolean.TYPE;
}
   @Override
public Object getFromType() {
    return Boolean.TYPE;
}
@Override
    public Object convert(Object fromObject) {
    if (fromObject instanceof Boolean) {
   // return inverse to disable the other button
        return ((Boolean) fromObject).booleanValue() ? Boolean.FALSE : Boolean.TRUE;
        }
  return Boolean.FALSE;
}
});
dbc.bindValue(observeEnabledButton1, observeEnabledButton2, updateValueStrategy, updateValueStrategy);

谢谢

0 个答案:

没有答案