[英]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.