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

 
前一页第 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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值