快速业务通道

用eJFace开发嵌入式应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
入式应用程序(5) 时间:2011-08-27 IBM Sam Lo

在扩展 org.eclipse.ercp.eworkbench.applications 之后,我们将创建 TreeViewer 实 例并与生成的 SampleView 类的 createPartControl 方法中的当前复合内容关联 起来。然后设定此树的期望布局并向此 TreeViewer 中添加树内容提供程序和树 标签提供程序实例。内容提供程序将提供所有树的父子节点关系,而标签提供程 序将提供每个元素所表示的图像和文本。最后,为这个 TreeViewer 给定一个输 入节点。记住,此输入节点应当是数据模型的根节点。例如,我们将先创建根节 点并向其中添加三个 NBATeamNode 作为另一个球队名称。然后,我们将使用变量 NBAPlayer 将五个首发上场的 NBA 球员添加到每个球队中。正如您可以看到的那 样,我们把名为 “root” 的根 NBATeamNode 输入到 TreeViewer 中 。

清单 2. SampleView 类

public void createPartControl (Composite parent){  composite= new Composite (parent,SWT.NONE);  composite.setLayout(new GridLayout (1,false));  treeviewer = new TreeViewer(composite);  treeviewer.getTree().setLayoutData(new GridData (GridData.FILL_BOTH));  treeviewer.setContentProvider(new  SampleTreeContentProvider());  treeviewer.setLabelProvider(new  SampleTreeLabelProvider());  treeviewer.setInput(getInput());  treeviewer.expandAll(); } private NBATeamNode  getInput(){  NBATeamNode root = new NBATeamNode("root");  NBATeamNode team1= new NBATeamNode("Houston Rockets");   NBATeamNode team2= new NBATeamNode("LA Lakers");  ...  root.addTeam(team1);  root.addTeam(team2);  ...  team1.addPlayer(new NBAPlayer("Yao Ming"));  team1.addPlayer(new NBAPlayer("Tracy McGrady"));  ...  return root; }

树内容提供程序必须实现 ITreeContentProvider。使用 getParent 和 getChildren 方法定义此树的父子 节点关系。最后,使用 getElements 方法获得每个元素的子元素。

清单 3. TreeViewerContentProvider

public class  SampleTreeContentProvider implements ITreeContentProvider {  //other methods are not mentioned here are unchanged    public Object[] getChildren(Object arg0) {   if(arg0  instanceof NBATeamNode) {     NBATeamNode node =  (NBATeamNode)arg0;     return concat(node.getteams().toArray (),node.getplayers().toArray());   }   return  EMPTY_ARRAY;  }  protected Object[] concat(Object[]  object, Object[] more) {   Object[] both = new Object [object.length + more.length];   System.arraycopy(object, 0,  both, 0, object.length);   System.arraycopy(more, 0, both,  object.length, more.length);   return both;  }   public Object getParent(Object arg0) {   return  ((NBATeamNode) arg0).getParent();  }  public Object[]  getElements(Object arg0) {  return getChildren(arg0);  }

用eJFace开发嵌入式应用程序(6)

时间:2011-08-27 IBM Sam Lo

树标签提供程序必须实现 ILabelProvider。正如您可以看到 的那样,我们将使用 getImage 和 getText 方法定义每个节点所表示的图像和文 本。

清单 4. TreeViewerLabelProvider

public class  SampleTreeLabelProvider implements ILabelProvider

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号