您的位置:首页 > 编程语言 > Java开发

Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能(7/19)

2008-08-28 18:22 465 查看



第 7 页,共 19 页

对本教程的评价


帮助我们改进这些内容
将 Presentation Model 与 UI 同步

您可能想知道哪些组件必须做 JFace 数据绑定。如您所见,Presentation Model 使代码更易于测试。但是,Presentation Model 中的数据和状态仍没有被反映到 UI 中。自己编写所有同步代码会很费事。幸运的是,可以使用 JFace 数据绑定。通过更改构造函数和
bindGUI()
方法可以轻松地重构受损示例中的
ContactForm
,如清单 7 所示。

清单 7. 重构的 ContactForm

public ContactForm(Composite c, ContactPresentationModel
presentationModel) {
this.contact = new Contact();
createControls(c);
createButtons(c);
bindGUI(presentationModel);
}

private void bindGUI(ContactPresentationModel
presentationModel) {
DataBindingContext ctx = createContext();
ctx.bind(nameTxt,
new Property(presentation/
Model.getContact(), "name"),
new BindSpec());
ctx.bind(spouseTxt,
new Property(presentation/
Model.getContact(), "spouse"),
new BindSpec());
ctx.bind(yearsMarriedTxt,
new Property(presentation/
Model.getContact(), "yearsMarried"),
new BindSpec());
ctx.bind(new Property(yearsMarriedTxt, "enabled"),
new Property(presentation/
Model, "enableYearsMarried"),
new BindSpec());

}
接下来,更改示例运行程序中的
run()
方法,如清单 8 所示。

清单 8. 重构的示例运行程序

public void run() {

...
ContactPresentationModel presentationModel = /
new ContactPresentationModel(contact);
ContactForm contactForm = new ContactForm(shell, presentationModel);

shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐