我的E4应用程序中的Databinding(Widget)和模型(int值)之间有一个Slider。
如果启动应用程序并移动Slider,则Model值会正确更新,因此Databinding可以工作。
但是,如果我通过setSelection方法设置Slider选择,则不会执行Databinding,因此不会更新模型值。
我尝试了其他所有set方法,但是没有任何效果。如何从代码中更改Slider值,以便更新模型?
Databinding(该部件的postConstruct方法内部):
protected Slider penaltyPercent;
...
// Bind penaltyPercent
IObservableValue observableModelPenaltyPercent = BeanProperties.value(
Config.class, "penaltyPercent").observe(config);
IObservableValue observableWidgetPenaltyPercent = WidgetProperties
.selection().observe(penaltyPercent);
ctx.bindValue(observableWidgetPenaltyPercent,
observableModelPenaltyPercent);
该模型:
public class Config extends ModelObject {
private int penaltyPercent;
public int getPenaltyPercent() {
return penaltyPercent;
}
public void setPenaltyPercent(int penaltyPercent) {
if (penaltyPercent >= 0 && penaltyPercent <= 100) {
firePropertyChange("penaltyPercent", this.penaltyPercent,
this.penaltyPercent = penaltyPercent);
}
}
}
最佳答案
通知控件的侦听器一个选择事件可能就足够了:
Event event = new Event();
event.widget = penaltyPercent;
event.display = penaltyPercent.getDisplay();
event.type = SWT.Selection;
penaltyPercent.notifyListeners(SWT.Selection, event);
您可能需要在活动中填写更多字段。