我正在编写一个JFace对话框,我想使用对模型对象的数据库。
查看代码,我可以看到,有时我会发现用于构建绑定的PojoProperties
,而其他时候则使用PojoObservables
。
看看我能读到的Javadoc:
PojoObservables::用于为POJO(普通的旧java对象)创建可观察对象的工厂,这些对象符合带有getter和setter的对象的概念,但在更改时不提供属性更改事件。
PojoProperties:用于为POJO(普通的旧Java对象)创建属性的工厂,它符合带有getter和setter的对象的思想,但在更改时不提供属性更改事件。
同样的问题也适用于BeansObservables和BeansProperties之间存在的差异。
(明显的)区别在于,可观察的允许观察对象,而属性允许观察属性,但是由于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;
}
}
对话框(相关部分):
@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);
}
绑定(相关部分):
// 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
,但是如果需要的话,我可以从查看器获得组合体,然后用另一种方式绑定。
另外,我可以将两者混合起来吗,例如,使用observeValue
和ViewerProperties
IObservableValue observeValue = PojoObservables.observeValue(m_dataObject, "value");
IObservableValue observeWidget = ViewerProperties.singleSelection().observe(m_comboViewer);
发布于 2012-10-23 12:33:38
我正在与JFace查看器(特别是ComboViewer)玩一些&绑定,并发现如果我使用
SWTObservables.observeSelection(comboViewer.getCombo());
那么,数据库处理就不能正常工作了。
但是,如果我使用
ViewersObservables.observeSingleSelection(comboViewer);
然后一切都如期而至。
也许这对我的情况是一个特殊的,所以为了得到一个更好的概述,我将在下面的段落中描述我的设置。
我有modelObject
,字段名为selectedEntity
和entities
,并将这个ComboViewer
绑定到modelObject
。
modelObject.entities
集合添加了任何实体,那么我想要将这个实体自动添加到组合体中。modelObject.selectedEntity
。modelObject.selectedEntity
,我想要自动设置组合式选择。源代码可在:https://gist.github.com/3938502上找到
发布于 2016-01-18 10:26:15
由于Eclipse,PojoObservables被弃用于PojoProperties,而BeansObservables被弃用于BeanProperties,所以应该使用的答案现在变得很明显了。
https://stackoverflow.com/questions/12855573
复制相似问题