treeview树的实现
package com.huawei.test;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class TreeViewTest {
public static void main(String[] args) {
TreeViewTest window = new TreeViewTest();
window.open();
}
public void open() {
final Display display = new Display();
final Shell shell = new Shell();
shell.setLayout(new FillLayout());
ui(shell);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
private void ui(Shell shell) {
Composite c = new Composite(shell, SWT.NONE);
c.setLayout(new FillLayout());
TreeViewer tv = new TreeViewer(c, SWT.BORDER);
tv.setContentProvider(new MyContentProvider());
tv.setLabelProvider(new MyLableProvider());
tv.setInput(new Object());// 设置输入对象的方法与前面相同
}
/**
* 内容提供器。由它决定那些对象应该输出在TreeViewer里显示
*/
private static final class MyContentProvider implements
ITreeContentProvider {
/**
* 由这个方法决定树的顶级显示那些对象。在此方法里生成了三个Country对象
*
* @param inputElement
* 用tv.setInput()方法输入的那个对象,在这里没有使用这个对象
*/
public Object[] getElements(Object inputElement) {
String[] obj = new String[3];
obj[0] = "中国";
obj[1] = "美国";
obj[2] = "英国";
return obj;
}
/**
* 由这个方法决定结点应该显示那些子结点。在这里也不管父结点是什么,每个结点都统一有三个字结点
*
* @param parentElement被点击的结点
* (父结点)
*/
public Object[] getChildren(Object parentElement) {
String[] obj = new String[4];
obj[0] = "桂林";
obj[1] = "北京";
obj[2] = "纽约";
obj[3] = "伦敦";
return obj;
}
/**
* 判断某结点是否有子结点。在这里不管3721,全返回真,即都有子结点。这时结点前都有一个“+”号图标
*
* @param element
* 需要判断是否有子的结点
*/
public boolean hasChildren(Object element) {
return true;
}
/**
* 取得某结点的父结点。极少需要实现此方法
*/
public Object getParent(Object element) {
return null;
}
/**
* 当TreeViewer被销毁时将执行这个方法。极少需要实现此方法
*/
public void dispose() {
}
/**
* 当tv.setInput()发生变化时调用此方法。极少需要实现此方法
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
/**
* 标签提供器。主要负责每一单个对象在TreeViewer中的显示(文字、图象)
*/
private static final class MyLableProvider implements ILabelProvider {
/**
* 显示什么图片
*
* @param 结点
* @return 可以为null值
*/
public Image getImage(Object element) {
// ISharedImages sharedImages =
// PlatformUI.getWorkbench().getSharedImages();
// return sharedImages.getImage(ISharedImages.IMG_OBJS_WARN_TSK);
return null;
}
/**
* 显示什么文字
*
* @param 结点
* @return 不能为null值
*/
public String getText(Object element) {
return (String) element;
}
public void addListener(ILabelProviderListener listener) {
}
public void dispose() {
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
}
/**
* 标签提供器。如果你赚上面的MyLableProvider那些没用的方法碍眼,
* Eclipse中有一个ILabelProvider的缺省实现LabelProvider,继承它也行
*/
// private static final class MyLableProvider extends LabelProvider {
// public String getText(Object element) {
// return (String)element;
// }
// }
}
分享到:
相关推荐
用treeview实现树形列表,可实现多级扩展
VB6.0 自定义TreeView树形菜单(展开菜单),类似于实现多级菜单、展开菜单的功能,当然也可当作Tree树控菜单来使用。最终的功能预览图请参见测试截图所示。 Set a = TreeView1.Nodes.Add(, etvwFirst, 1, "第一个...
用jQuery实现的 TreeView树 动态加载 你想要的数据 很方便
包括TreeView控件参数、TreeView控件应用简析、TreeView详解等三个文件。VC、VB、vfp、SQL程序员的必备武器。
一个Delphi编写的相当不错的TreeView树控菜单,类似于Windows资源管理器中的树状菜单。 ParentFolder: IShellFolder; // 节点对应的文件夹的父文件夹的IShellFolder接口 Pidl, FullPidl: PItemIDList;// 节点...
Delphi树形菜单类以及例子,结合数据库生成Treeview树控菜单视图,你可了解下如何按照节点在数据库中的编号查找节点、如何查找节点在数据库中的数据、填充节点等。这个类通过数据库中的数据自动添加到Treeview控件中...
jQuery treeview树形结构应用 本文实例为大家分享了jQuery treeview树形结构的应用代码,供大家参考,具体内容如下 继Bootstrap-treeview应用后,我又尝试了用jquery-treeview解决这个问题,记录我的解决方案,...
android treeview 树形结构
VB实现Treeview树形菜单节点拖动、增加、删除实例源码
BootstrapTreeView树形插件
VB中Treeview 树形菜单节点拖动、增加、删除实例。
Jquery TreeView 树形插件 美观方便使用的第三方插件
一个很好的递归显示TreeView树形图例子
层数太多显示不全时可左右滑动,可以选中,全选或取消全选。
bootstraptable-treeview树形,树形空格缩进bug已解决。
NET treeview树 数据的添加 修改 使用
jquery treeview树控件是一款非常实用的jquery插件treeview。
Delphi Treeview树形菜单视图源码,通过数据库读取到资料,然后绑定显示到TreeView中,通过多组数据的比较,可以看出不同方式之间速度的差异,一般情况下我们都是在使用时才打开树状菜单,才开始加载数据。...
VB版Treeview树控菜单的典型应用示例,示例没有演示有多少级,但实际上本树控可无限级下去,树形菜单也是我们应用较为广泛的小模块,如果从事稍大点的项目开发,经常会用到,所以对此不熟悉的VB朋友可以借鉴一下哦。
Treeview树控操作Delphi数据库实例..rar