java - 以编程方式触发切片器选择上的数据绑定(bind)执行

标签 java swt eclipse-rcp jface e4

我有一个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/

相关文章:

Java 和 MySQL - 唯一 key 不起作用?

java - 有没有办法为 SWT 组件启用双缓冲?

eclipse-plugin - 片段的内容在主机插件之外可见吗?

java - Eclipse RCP 中的许多查看器、一个或多个内容提供者/域模型

java - 在大数中找到下一个增量的最有效方法

java - 将 User 对象存储到 session 的安全性

java - 异常后保留jdbc批处理语句

java - 检查 SWT/Jface 中数据绑定(bind)的值

java - 在 Eclipse RCP 中实现属性表编辑器的最简单方法是什么?

java - 如何从 TitleAreaDialog 引用 SWT View