WEB开发网
开发学院软件开发Java 了解 Eclipse 中的 JFace 数据绑定,第 3 部分: 使... 阅读

了解 Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 要使测试能够通过,则需重构 ContactPresentationModel 构造函数和 EnablementPropertyChangeListener,了解 Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能(10),如清单 10 所示,清单 10. 修改 Presen

要使测试能够通过,则需重构 ContactPresentationModel 构造函数和 EnablementPropertyChangeListener,如清单 10 所示。


清单 10. 修改 Presentation Model 使其能够显式启用
public ContactPresentationModel(Contact contact) { 
  this.contact = contact; 
 
  EnablementPropertyChangeListener enablementPropertyChangeListener = 
   new EnablementPropertyChangeListener(); 
  addPropertyChangeListener("enableYearsMarried", 
      enablementPropertyChangeListener); 
} 
 
 
private class EnablementPropertyChangeListener implements 
    PropertyChangeListener { 
 
  public void propertyChange(PropertyChangeEvent evt) { 
    if (!getEnableYearsMarried()) { 
      getContact().setYearsMarried(null); 
   getContact().setSpouse(null); 
    } 
  } 
} 

最后还需要做的是修改 UI。需要将标签和复选框添加到 createControls() 方法中。然后必须将这个新复选框绑定到 Presentation Model。最后,为了像 Years Married 字段一样可以启用/禁用 Spouse 字段,请将 Spouse 字段的已启用属性绑定到 Presentation Model 中的同一位置。这些更改如清单 11 所示。


清单 11. 将复选框添加到 UI 中
private void bindGUI(ContactPresentationModel 
presentationModel) { 
. . . 
  ctx.bind(chkIsMarried,  
    new Property(presentationModel, "enableYearsMarried"),   new BindSpec()); 
  ctx.bind(new Property(spouseTxt, "enabled"),  
    new Property(presentationModel, "enableYearsMarried"), 
      new BindSpec()); 
 
} 
 
private void createControls(Composite c) { 
 
  . . . 
 
  Label labelMarried = new Label(c, SWT.SHELL_TRIM); 
  labelMarried.setText("Married"); 
 
  gridData = new GridData(GridData.FILL_HORIZONTAL); 
  this.chkIsMarried = new Button(c, SWT.CHECK); 
  this.chkIsMarried.setLayoutData(gridData); 
 
  . . . 
} 

上一页  5 6 7 8 9 10 

Tags:了解 Eclipse JFace

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接