TreeViewer应用实例(ITreeContentProvider与LabelProvider的使用)
2017-06-26 21:05
441 查看
代码案例如下:
1、TreeViewer
2、ITreeContentProvider
3、LabelProvider
4、案例展示结果如下:
1、TreeViewer
TreeViewer matchPathTreeViewer = new TreeViewer(sashForm_3, SWT.BORDER); matchPathTreeViewer.setLabelProvider(new MatchPathLabelProvider()); matchPathTreeViewer.setContentProvider(new MatchPathTreeContentProvider()); MatchTree matchTree = item.getmTree(); matchPathTreeViewer.setInput(matchTree);
2、ITreeContentProvider
private class MatchPathTreeContentProvider implements ITreeContentProvider { //关闭窗口:会先后执行inputChanged和dispose方法。 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } public void dispose() { } // getElements方法决定树的“第一级”结点显示哪些对象。 //inputElement为输入的那个MatchTree对象。 //Object[]是一个数组,数组中一个元素就是一个结点。 public Object[] getElements(Object inputElement) { if (inputElement instanceof MatchTree) { MatchTree input = (MatchTree) inputElement; return input.getChildren().toArray(); } return new Object[0]; // 空数组 } // 在界面中单击某结点时,getChildren方法决定被单击结点应该显示哪些子结点。 // parentElement就是被单击的结点对象。返回的数组就是应显示的子结点。 public Object[] getChildren(Object parentElement) { if (parentElement instanceof MatchTree) { return ((MatchTree) parentElement).getChildren().toArray(); } return new Object[0]; } // 判断参数element结点是否有子结点。 // 返回true表示element有子结点,则其前面会显示有“+”号图标 public boolean hasChildren(Object element) { if (element instanceof MatchTree){ return ((MatchTree) element).getChildren().size() > 0; } return false; } //取得element的父结点。该案例中未使用。 @Override public Object getParent(Object element) { // TODO Auto-generated method stub return null; } }
3、LabelProvider
private class MatchPathLabelProvider extends LabelProvider { //设置结点的图标 public Image getImage(Object element) { if (element instanceof MatchTree){ String type = ((MatchTree) element).getData().getType(); switch(type){ case "rule": return ruleIcon; case "literal": return literalIcon; default: break; } } return super.getImage(element); } //输出节点内容 public String getText(Object element) { if (element instanceof MatchTree) { return ((MatchTree) element).getData().getInfo(); } return element.toString(); } }
4、案例展示结果如下:
相关文章推荐
- 使用Delphi调用WebServices接口的简单应用实例
- Servlet程序应用和实例之使用Cookie简析
- 使用XmlDocument操作XML进行查询、增加、修改、删除、保存应用的实例(转载)
- Android应用实例之---使用Linkify + 正则式区分微博文本链接及跳转处理
- Android应用实例之----基于Service与ContentProvider的音乐播放实例!
- 需要使用单一实例合需要应用单例模式的区别
- Android深入浅出系列之实例应用—弹出消息Toast对象的使用纯文本方式(一)
- DotNET企业架构应用实践-系统架构与性能-在业务中实例使用缓存与缓存查询-附上视频
- tomcat配置及使用(环境变量设置及测试,一个简单的web应用实例)
- 使用Flex和Flash Builder创建员工目录移动应用实例
- Servlet程序应用和实例之使用Cookie简析
- Android应用实例之----基于Service与ContentProvider的音乐播放实例!
- Android应用实例之----基于Service与ContentProvider的音乐播放实例!
- C#使用XmlDocument操作XML进行查询、增加、修改、删除、保存应用的实例
- php park、unpark、ord 函数使用方法(二进制流接口应用实例)
- 在看官方的例子时候由一个grid实例,在每一行之前有个加号,展开可以显示内容,在实际应用中还是非常有用的,照搬例子的代码,发现老是提示对象不存在,查阅资料后发现是没有加载插件,这里和大家分享下Ext.grid.RowExpander插件的使用,
- C#中使用反射机制得到类型实例应用Demo
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)
- submit应用实例全面实现一段代码多次使用(ALV显示然后打印)
- FusionCharts Free(一)使用方法和应用实例(asp.net)