簡體   English   中英

SWT Widgets綁定問題

[英]SWT Widgets problems with binding

我正在研究Eclipse RCP應用程序,我需要創建一個更大的對話框,我需要使用數據綁定。 使用TextFields可以很好地綁定。 我有2個SWT小部件的問題 - Combo,Spinner。 在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);

}

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);

在這里你可以看到我的微調器和組合的代碼,在微調器中應該可以手動編寫文本。 Combo沒有這種可能性。 感謝幫助。

    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]));

謝謝,它可以在Spinner中居中文本嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM