开发经典教程组件

上传人:lcm****20 文档编号:47621847 上传时间:2018-07-03 格式:PDF 页数:7 大小:111.45KB
返回 下载 相关 举报
开发经典教程组件_第1页
第1页 / 共7页
开发经典教程组件_第2页
第2页 / 共7页
开发经典教程组件_第3页
第3页 / 共7页
开发经典教程组件_第4页
第4页 / 共7页
开发经典教程组件_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《开发经典教程组件》由会员分享,可在线阅读,更多相关《开发经典教程组件(7页珍藏版)》请在金锄头文库上搜索。

1、Eclipse开发经典教程:TreeViewer组件 疯狂代码 http:/CrazyC :http:/CrazyC TreeViewer构建步骤 TreeViewer中主要通过内容提供器(ITreeContentProvider)和标签提供器(ILabelProvider)组织树节点内 容和显示信息TreeViewer构建步骤如下 1. 创建TreeViewer对象例如“TreeViewer tv = TreeViewer(composite);” 2. 设定内容管理器例如“tv.ContentProvider( FileTreeContentProvider);” 3. 设定标签提供器例如

2、“tv.LabelProvider( FileTreeLabelProvider);” 4. 设定TreeViewer输入数据例如“tv.Input(“root“);”(用户可以通过输入数据构建树) TreeViewer内容提供器 TreeViewer内容提供器(ITreeContentProvider)构建树中比较复杂部分它为树显示提供了内容内容提供器 要实现思路方法如下 1. getElements 此定义为“public Object getElements(Object inputElement);”当开始构建树时首先getElements返回 个对象此对象表示当前树根节点inputE

3、lement参数为TreeViewer输入(Input输入数据) 2. hasChildren 此定义为“public boolean hasChildren(Object element);”当TreeViewer显示个节点后会 hasChildren判断当前节点是否有子节点如果有子节点则显示“+”element参数为要判断是否有子节点节点 3. getChildren 此定义为“public Object getChildren(Object parentElement);”当用户选择节点打开子节点时会 getChildren返回下层子节点parentElement参数为选择节点 4. g

4、etParent 此定义为“public Object getParent(Object element);”可以通过此思路方法返回element父节点 5. inputChanged 此定义为“public void inputChanged(Viewer viewer, Object oldInput, Object Input);”当输入改变时 此思路方法 6. dispose 此定义为“public void dispose;”当树销毁时被 其中getElements、hasChildren和getChildren是常用思路方法用户通过重写这几个思路方法构建棵树过 程如下:通过getE

5、lements思路方法得到根再通过hasChildren判断根下是否有子节点如果有子节点可以通过 getChildren得到所有子节点如例程1为ITreeContentProvider接口个简单实现 例程1 FileTreeContentProvider.java FileTreeContentProvider implements ITreeContentProvider public Object getChildren(Object arg0) /返回树下级节点 (File) arg0).listFiles; public Object getParent(Object arg0) /返

6、回树上级节点 (File) arg0).getParentFile; public boolean hasChildren(Object arg0) Object obj = getChildren(arg0); /判断树是否有下级节点true为在节点显示“+“信息 obj null ? false : obj.length 0; public Object getElements(Object arg0) /打印出树输入信息通常用户可以通过输入信息构建树 .out.prln(arg0); / File.listRoots作为树根节点 File.listRoots; 上例内容提供器通过文件系统

7、获得树输入内容从而使用户构造树能显示磁盘文件树结构 在TreeViewer中通过标签提供器(ILabelProvider)来显示节点相关信息包括显示内容和图标 ILabelProvider主要实现getImage和getText当TreeViewer得到个节点后会通过getText得到此节点显示 文本通过getImage思路方法得到节点显示图标代码如例程2所示 例程2 ViewLabelProvider.java ViewLabelProvider extends ILabelProvider public String getText(Object obj) obj.toString; pu

8、blic Image getImage(Object obj) String imageKey = ISharedImages.IMG_OBJ_ELEMENT; (obj instanceof TreeParent) imageKey = ISharedImages.IMG_OBJ_FOLDER; PlatformUI.getWorkbench.getSharedImages.getImage(imageKey); TreeViewer例子 在TreeViewer例子中般还要定义树节点结构本例中File对象就能够表示节点父子关系代码如例程3所示 例程3 FileBrowserTreeViewe

9、r.java /* * 为了节省篇幅把所有import类注释了 * 读者可以通过ctrl+sht+o快捷键自动引入所依赖类 * */ public FileBrowserTreeViewer extends ApplicationWindow public FileBrowserTreeViewer super(null); public void run BlockOnOpen(true); open; Display.getCurrent.dispose; protected void configureShell(Shell shell) super.configureShell(she

10、ll); shell.Text(“File Tree“); shell.Size(400, 400); protected Control createContents(Composite parent) Composite composite = Composite(parent, SWT.NONE); / 父容器分列显示 composite.Layout( GridLayout(1, false); Button preserveCase = Button(composite, SWT.CHECK); preserveCase.Text(“ final TreeViewer tv = Tr

11、eeViewer(composite); / 让树组件两端对齐 tv.getTree.LayoutData( GridData(GridData.FILL_BOTH); / 添加内容管理器 tv.ContentProvider( FileTreeContentProvider); / 添加标签管理器 tv.LabelProvider( FileTreeLabelProvider); / 设置treeviewer输入 tv.Input(“root“); / pass a non-null that will be ignored preserveCase.addSelectionListener

12、( SelectionAdapter public void widgetSelected(SelectionEvent event) boolean preserveCase = (Button) event.widget).getSelection; FileTreeLabelProvider ftlp = (FileTreeLabelProvider) tv .getLabelProvider; ftlp.PreserveCase(preserveCase); ); composite; public void (String args) FileBrowserTreeViewer.ru

13、n; /定义内容提供器 FileTreeContentProvider implements ITreeContentProvider public Object getChildren(Object arg0) /返回树下级节点 (File) arg0).listFiles; public Object getParent(Object arg0) /返回树上级节点 (File) arg0).getParentFile; public boolean hasChildren(Object arg0) Object obj = getChildren(arg0); /判断树是否有下级节点tru

14、e为在节点显示“+“信息 obj null ? false : obj.length 0; public Object getElements(Object arg0) /打印出树输入信息通常用户可以通过输入信息构建树 .out.prln(arg0); / File.listRoots作为树根节点 File.listRoots; public void dispose public void inputChanged(Viewer arg0, Object arg1, Object arg2) /定义标签提供器 FileTreeLabelProvider implements ILabelPr

15、ovider private List listeners; private Image file; private Image dir; boolean preserveCase; public FileTreeLabelProvider listeners = ArrayList; try /添加文件和目录图标 file = Image(null, FileInputStream(“icons/file.g“); dir = Image(null, FileInputStream(“icons/directory.g“); catch (FileNotFoundException e) public void PreserveCase(boolean preserveCase) this.preserveCase = preserveCase; /触发事件重新得到显示标签 LabelProviderChangedEvent event = LabelProviderChangedEvent(this); for ( i = 0, n = list

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号