arz*_*llo 5 data-binding jface eclipse-databinding
我正在编写一个JFace对话框,我想使用数据绑定到模型对象.
查看代码我可以看到有时我发现PojoProperties用于构建绑定,而有时则使用它PojoObservables.
看着Javadoc,我可以读到:
PojoObservables:一个工厂,用于为POJO(普通的旧Java对象)创建可观察对象,这些对象符合具有getter和setter的对象的想法,但不会在更改时提供属性更改事件.
PojoProperties:一个工厂,用于为POJO(普通旧Java对象)创建属性,这些属性符合具有getter和setter的对象的想法,但不会在更改时提供属性更改事件.
同样的问题适用于BeansObservables和BeansProperties之间存在的差异
(显而易见的)差异是因为observable允许观察对象而属性允许观察属性,但由于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;
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
据我所知有一次我正在使用一个组合而另一个我正在使用一个组合ComboViewer,但我可以从查看器中获取组合并在需要时绑定其他方式...
另外,我可以将两者混合,例如使用observeValue与ViewerProperties?
IObservableValue observeValue = PojoObservables.observeValue(m_dataObject, "value");
IObservableValue observeWidget = ViewerProperties.singleSelection().observe(m_comboViewer);
Run Code Online (Sandbox Code Playgroud)
我正在使用 JFace 查看器(尤其是 ComboViewer)和数据绑定,发现如果我使用
SWTObservables.observeSelection(comboViewer.getCombo());
Run Code Online (Sandbox Code Playgroud)
那么数据绑定无法正常工作。
但是,如果我使用
ViewersObservables.observeSingleSelection(comboViewer);
Run Code Online (Sandbox Code Playgroud)
然后一切都按预期进行。
也许这对我的情况来说是特殊的,所以为了更好地概述我将在下一段中描述我的设置。
我有一个名为andmodelObject的字段,并将其绑定到.selectedEntityentitiesComboViewermodelObject
modelObject.entities,那么我希望该实体自动添加到组合中。modelObject.selectedEntity自动设置。modelObject.selectedEntity我想自动设置组合选择。源代码可以在:https: //gist.github.com/3938502找到
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |