SWT小部件绑定问题

时间:2019-05-04 11:25:53

标签: java eclipse swt eclipse-rcp

我正在开发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);

}

3 个答案:

答案 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中居中显示文本是否可行?