我正在开发Eclipse RCP应用程序,我需要创建一个更大的对话框,在其中需要处理数据绑定。使用TextFields可以很好地进行绑定。我有2个SWT小部件的问题-组合,微调器。 在Spinner中会有数字,我也可以在其中写。微调框仅使用字符串数组中的值。
对于绑定,我使用以下代码:
private void doBinding(MyPartComposite comp) {
/* code for spinner */
IObservableValue model = PojoProperties.value(MyPart.class, "age").observe(comp.result); //$NON-NLS-1$
ISWTObservableValue target = WidgetProperties.text(SWT.Modify).observe(comp.ageSpinner);
UpdateValueStrategy targetToModel = new UpdateValueStrategy(UpdateValueStrategy.POLICY_CONVERT);
this.dataBindingContext.bindValue(target, model, targetToModel, null);
/* code for combo */
model = PojoProperties.value(MyPart.class, "gender").observe(comp.result); //$NON-NLS-1$
target = WidgetProperties.text(SWT.Modify).observe(comp.genderCombo);
targetToModel = new UpdateValueStrategy(UpdateValueStrategy.POLICY_CONVERT);
this.dataBindingContext.bindValue(target, model, targetToModel, null);
}
答案 0 :(得分:0)
Spinner
没有text属性,而是将其绑定到所选内容。下面的示例对我有用,我假设age属性是整数,性别是String。
IObservableValue observeSelectionAgeSpinnerObserveWidget = WidgetProperties.selection().observe(ageSpinner);
IObservableValue ageResultObserveValue = PojoProperties.value("age").observe(comp.result);
dataBindingContext.bindValue(observeSelectionAgeSpinnerObserveWidget, ageResultObserveValue, null, null);
//
IObservableValue observeSingleSelectionGenderCombo = ViewerProperties.singleSelection().observe(genderCombo);
IObservableValue genderResultObserveValue = PojoProperties.value("gender").observe(comp.result);
dataBindingContext.bindValue(observeSingleSelectionGenderCombo, genderResultObserveValue, null, null);
答案 1 :(得分:0)
在这里您可以看到我的微调框和组合框的代码,在微调框内应该可以手动编写文本。组合没有这种可能性。感谢帮助。
Spinner ageSpinner = new Spinner(myGroup, SWT.BORDER);
ageSpinner.setMinimum(1);
ageSpinner.setMaximum(100);
GriData gd = new GridData();
gd.horizontalAlignment = SWT.FILL;
ageSpinner.setLayoutData(gd);
ComboViewer genderCombo = new ComboViewer(myGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
gd = new GridData();
gd.horizontalSpan = 2;
gd.horizontalIndent = 10;
gd.horizontalAlignment = SWT.FILL;
gd.grabExcessHorizontalSpace = true;
genderCombo.getControl().setLayoutData(gd);
genderCombo.setContentProvider(ArrayContentProvider.getInstance());
genderCombo.setInput(this.genders.toArray(new String[0]));
答案 2 :(得分:0)
谢谢,在Spinner中居中显示文本是否可行?