Jface.treeViewer使用小结
作为表格树
treeViewer 的使用和TableViewer的使用基本一样。如下:
treeViewer = new TreeViewer(this, SWT.FULL_SELECTION | SWT.BORDER);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
treeViewer.getTree().setLayoutData(gridData);
treeViewer.getTree().setHeaderVisible(true);
treeViewer.getTree().setLinesVisible(true);
// 创建列=====================
UI.createTreeViewerColumn(treeViewer, "首列", 250);
UI.createTreeViewerColumn(treeViewer, "第二列", 60);
UI.createTreeViewerColumn(treeViewer, "第三列", 70);
……
UI.createTreeViewerColumn(treeViewer, "备注", 80);
// 创建列完毕===================
C1PortTableProvider provider = new C1PortTableProvider();
treeViewer.setContentProvider(provider);
treeViewer.setLabelProvider(provider);
上面就创建了一个表格树的形式。其中第一列将以树形展示。
其中,
createTreeViewerColumn(TreeViewer viewer, String text, int width)
{
final TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT);
column.getColumn().setText(text == null ? "" : text);
column.getColumn().setWidth(width);
column.getColumn().setData(ID, text);
return column;
}
LabelProvider
它的LabelProvider是ITableLabelProvider的实现。主要是实现:
public String getColumnText(Object element, int columnIndex);方法来填充界面显示的内容。
contentProvider
它的contentProvider是ITreeContentProvider的实现。ITreeContentProvider中的四个抽象方法都需要实现。
数据
为了满足或者说比较容易的实现ITreeContentProvider中的方法,需要设计一下这个treeViewer的数据来源,也就是treeViewer.setInput()时的参数。参照树的表现形式和ITreeContentProvider的四个方法。这个数据结构很容易的设计成:
protected String name;
protected EvaTreeItem parent;
protected List<EvaTreeItem> children;
private 其他属性(包括各列值)
public EvaTreeItem(String name, EvaTreeItem parent)
{
super();
this.name = name;
this.parent = parent;
}
publicvoid addChild(EvaTreeItem child)
{
if (null != child)
{
if (null == children)
{
children = new ArrayList<EvaTreeItem>();
}
children.add(child);
}
}
……
这样在setInput()时,我们构造一个EvaTreeItem的集合(list等)作为参数,在实现ITreeContentProvider方法时,比较好写。如下:
@Override
public Object[] getElements(Object inputElement)
{
if (inputElement instanceof List<?>)
{
return ((List<?>)inputElement).toArray();
}
returnnull;
}
@Override
public Object[] getChildren(Object parentElement)
{
if (parentElement instanceof EvaTreeItem)
{
EvaTreeItem ccase = (EvaTreeItem)parentElement;
if (null != ccase.getChildren() && !ccase.getChildren().isEmpty())
{
return ccase.getChildren().toArray();
}
}
returnnull;
}
@Override
public Object getParent(Object element)
{
if (element instanceof EvaTreeItem)
{
return ((EvaTreeItem)element).getParent();
}
returnnull;
}
@Override
publicboolean hasChildren(Object parentElement)
{
if (parentElement instanceof EvaTreeItem)
{
EvaTreeItem ccase = (EvaTreeItem)parentElement;
return (null != ccase.getChildren() && !ccase.getChildren().isEmpty());
}
returnfalse;
}
作为树使用
创建方式如同上述,但是要去掉创建列的部分。同时,可能需要去掉表格头和网线的显示。另外它的labelProvider不同(其他同,包括contentprovider和数据样式)。
LabelProvider
它的labelprovider和上面的不同,不创建列时,它的labelprovider需要实现的是ILabelProvider.并实现其public String getText(Object element)方法。
相关推荐
SWT的一个实例 TreeViewer的小程序范例
Eclipse开发经典教程-TreeViewer组件
基于python3.4,pyqt5和matplotlib的微软决二叉策树查看工具,内含源码
是一款针对后缀名为.tre .tree .nwk 等树文件的打开及编辑软件
#TreeViewer 交互式进化树可视化 此 Web 服务旨在提供完全交互式的进化树查看器。 该项目仍处于重开发阶段,可能会频繁出现大规模更改。 要测试 TreeViewer 的基本版本,请单击。 依赖项包括 D3.js、Bootstrap 和 ...
XML Tree Viewer,xml 树形结构查看器,是xml有关的开发人员的必备工具
eclipse 集成 JSON2XML Tree Viewer,json文本可以转换成xml和Tree
实现datagrid and treeviewer的drag drop, 只可单向drag
第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、...
qt 树形图 treeviewer 鼠标点击过滤
本实例完成了bootstrap TreeView的各种选择的事件触发,选中后打印出树节点的相关信息,包括单选,全选,父级和定位
作者:talent_marquis<甜菜侯爵> 联系方式: talent_marquis@163.com<br>marquis.hou@dextrys.com<br><br>简单说明: 这个小工具对于软件开发用户,特别是Bug fix类型的超小项目会很有用。对于普通用户用处...
基于C# winform,写的一个自定义TreeView和TreeNode,可以在每个自定义节点旁添加按钮。
1.7 本章小结 10 第2章 配置SWT开发环境 11 2.1 下载和安装Eclipse 11 2.1.1 Eclipse下载页面介绍 11 2.1.2 下载Eclipse 12 2.1.3 安装Eclipse语言包 14 .2.1.4 在不同的语言中切换 15 2.2 直接获取...
随着计算机和网络的普及,高等学校里纷纷建立了C/S或者B/S结构的网上选课系统。...由于每个院系都开设多门课程供学生选择,院系信息和课程信息形成一个树状的结构,所以使用TreeViewer控件显示这些信息比较合适。
随着计算机和网络的普及,高等学校里纷纷建立了C/S或者B/S结构的网上选课系统。...由于每个院系都开设多门课程供学生选择,院系信息和课程信息形成一个树状的结构,所以使用TreeViewer控件显示这些信息比较合适。
RCP实现的带有复选框的TreeViewer,选择相关行,能够提示用户相关信息
介绍Wismar应用科学大学的计算工程与自动化研究小组(CEA)已开发了软件“ SES_Tbx_Matlab”。 该软件的目的是使用系统实体结构(SES)对系统变量(系统结构和参数配置)进行基于本体的建模。... 新增工具:TREEVIEWER