白黒の 2 つのボタンを同期するためにデータ バインディングを使用しています。1 つが有効になっている場合は、もう 1 つを無効にするか、またはその逆にする必要があります。開始時の私のコードでは正常に動作しますが、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);
ありがとう