gpt4 book ai didi

data-binding - swt/jface 数据绑定(bind) : PojoProperties vs PojoObservable

转载 作者:行者123 更新时间:2023-12-04 20:49:01 25 4
gpt4 key购买 nike

我正在编写一个 JFace 对话框,并且我想对模型对象使用数据。

查看代码我可以看到有时我会找到 PojoProperties用于构建绑定(bind),而其他时候使用 PojoObservables .

查看Javadoc,我可以阅读:

PojoObservables : 创建工厂可观察对象 对于符合具有 getter 和 setter 的对象的概念但不提供更改时的属性更改事件的 POJO(普通的旧 Java 对象)。

Pojo房产 : 创建工厂房产 对于符合具有 getter 和 setter 的对象概念但不提供更改时的属性更改事件的 POJO(普通的旧 Java 对象)。

同样的问题适用于 之间存在的差异。 BeansObservables BeansProperties

(明显的)区别似乎是 observable 允许观察对象,而 properties 允许观察属性,但是由于 Pojo 的数据有一个 getter 和一个 setter,它们之间有什么区别?我应该为我的对话选择哪一个?

下面是一段代码摘录:

POJO:

public class DataObject {
private String m_value;
public String getValue() {
return m_value;
}
public void setValue(String i_value) {
m_value = i_value;
}
}

DIALOG(相关部分):

@Override
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);

m_combo = new Combo(container, SWT.BORDER);
m_comboViewer = new ComboViewer(container, SWT.NONE);

}

BINDING(相关部分):

    // using PojoObservable
IObservableValue observeValue = PojoObservables.observeValue(m_dataObject, "value");
IObservableValue observeWidget = SWTObservables.observeSelection(m_combo);

// using PojoProperties
IObservableValue observeValue = PojoProperties.value("value").observe(m_dataObject);
IObservableValue observeWidget = ViewerProperties.singleSelection().observe(m_comboViewer);

我知道有一次我使用的是组合,而另一次我使用的是 ComboViewer ,但是如果需要,我可以从查看器中获取组合并以另一种方式绑定(bind)...

另外,我可以将两者混合使用吗,例如使用 observeValueViewerProperties ?

    IObservableValue observeValue = PojoObservables.observeValue(m_dataObject, "value");
IObservableValue observeWidget = ViewerProperties.singleSelection().observe(m_comboViewer);

最佳答案

我正在玩一点 JFace 查看器(尤其是 ComboViewer)和数据绑定(bind),发现如果我使用

SWTObservables.observeSelection(comboViewer.getCombo());

然后数据绑定(bind)无法正常工作。

但是,如果我使用
ViewersObservables.observeSingleSelection(comboViewer);

然后一切都按预期工作。

也许这对我来说是一个特殊的案例,所以为了更好地了解它,我将在下面的段落中描述我的设置。

我有 modelObject字段名为 selectedEntityentities并绑定(bind)这个 ComboViewermodelObject .
  • 如果我将任何实体添加到 modelObject.entities,我想在模型对象中显示所有“实体”集合然后我想将此实体自动添加到组合中。
  • 如果用户选择组合中的某些项目,我想 modelObject.selectedEntity自动设置。
  • 如果我设置 modelObject.selectedEntity我想自动设置组合选择。

  • 源代码位于: https://gist.github.com/3938502

    关于data-binding - swt/jface 数据绑定(bind) : PojoProperties vs PojoObservable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12855573/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com