以编程方式触发Slider Selection上的DataBinding执行

时间:2015-05-20 13:36:54

标签: java swt eclipse-rcp jface e4

我的E4应用程序中DatabindingWidget)和模型(int值)之间有一个Slider

如果我启动应用程序并移动Slider,则Model值会正确更新,因此Databinding可以正常工作。 但是,如果我通过setSelection方法设置Slider选择,则不会执行Databinding,因此不会更新模型值。

我尝试了所有其他设置方法,但没有任何作用。如何更改代码中的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);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

向控件的听众通知选择事件可能就足够了:

Event event = new Event();
event.widget = penaltyPercent;
event.display = penaltyPercent.getDisplay();
event.type = SWT.Selection;

penaltyPercent.notifyListeners(SWT.Selection, event);

您可能需要在活动中填写更多字段。