我有一个Databinding之间 Widget ( Slider )和我的 E4 应用程序中的模型(int 值)。
如果我启动应用程序并移动 Slider ,模型值得到正确更新,因此 Databinding作品。
但如果我设置 Slider通过 setSelection 方法进行选择,Databinding不执行,因此模型值不会更新。
我尝试了像其他所有设置方法一样的方法,但没有任何效果。我怎样才能改变Slider来自代码的值,以便更新模型?
Databinding (在 Part 的 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);
您可能需要在 Activity 中填写更多字段。
关于java - 以编程方式触发切片器选择上的数据绑定(bind)执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351336/