SWT的TreeVierer的使用
先看一下效果图:

代码结构是这样的:

好的,现在看一下代码:
package model;
import java.util.List;
public interface ITree {
public String getName();
public void setName(String name);
public List getChildren();
public void setChildren(List children);
}
首先定义接口。再实现两个类。
package model; import java.util.ArrayList;
import java.util.List; public class Country implements ITree{
private String name;
private List children=new ArrayList();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Member> getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
} }
package model;
import java.util.List;
public class Member implements ITree{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public List getChildren() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setChildren(List children) {
// TODO Auto-generated method stub
}
}
以List的形式组织树形结构:
package model; import java.util.ArrayList;
import java.util.List; public class Factory {
public static List createTree(){ Country mouseCountry=new Country();
mouseCountry.setName("鼠球王国");
Country dogCountry=new Country();
dogCountry.setName("狗狗王国"); Member mouseBuble=new Member();
mouseBuble.setName("小鼠球");
Member mouseGray=new Member();
mouseGray.setName("小灰鼠");
ArrayList list=new ArrayList();
list.add(mouseBuble);
list.add(mouseGray);
mouseCountry.setChildren(list); Member dogBu=new Member();
dogBu.setName("布布狗");
Member dogBrick=new Member();
dogBrick.setName("专狗");
list=new ArrayList();
list.add(dogBrick);
list.add(dogBu);
dogCountry.setChildren(list); ArrayList countryList=new ArrayList();
countryList.add(mouseCountry);
countryList.add(dogCountry);
return countryList; }
}
实现他的两个Provider:
package com.test; import java.util.List; import model.ITree; import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer; public class TreeContentProvider implements IStructuredContentProvider,ITreeContentProvider{ @Override
public void dispose() {
// TODO Auto-generated method stub } @Override
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub } @Override
public Object[] getChildren(Object arg0) {
// TODO Auto-generated method stub
ITree tree=(ITree)arg0;
List list=tree.getChildren();
if(list!=null){
return list.toArray();
}
return new Object[0];
} @Override
public Object getParent(Object arg0) {
// TODO Auto-generated method stub
return null;
} @Override
public boolean hasChildren(Object element) {
// TODO Auto-generated method stub
ITree tree=(ITree)element;
List list=tree.getChildren(); return !(list==null || list.isEmpty());
} @Override
public Object[] getElements(Object arg0) {
// TODO Auto-generated method stub
if(arg0 instanceof List){
List list=(List)arg0;
return list.toArray();
}
return new Object[0];
} }
package com.test; import model.ITree; import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
public class TreeLabelProvider extends LabelProvider implements ILabelProvider{
public String getText(Object element){
ITree node=(ITree)element;
return node.getName();
}
public Image getImage(Object element){
return null;
}
}
最后是总的,将他们联系在一起:
package com.test; import model.Factory; import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell; public class LBMShow { public static void main(String[] args) {
final Display display=Display.getDefault();
final Shell shell=new Shell();
shell.setSize(500,500);
shell.setText("TreeTable"); final TreeViewer treeViewer=new TreeViewer(shell, SWT.BORDER | SWT.SCROLL_PAGE); treeViewer.setContentProvider(new TreeContentProvider());
treeViewer.setLabelProvider(new TreeLabelProvider());
treeViewer.setInput(Factory.createTree()); //这里可以将List的结构以树形结构显示出来。 shell.pack();
shell.open();
shell.setLayout(new FillLayout()); //没这句话竟然出不来效果!
shell.layout(); while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} }
//******************************************************************************************************************************
需要注意的是,要添加如下的包:

SWT的TreeVierer的使用的更多相关文章
- eclipse里打开SWT项目找不到source/design的图形UI设计界面
因为前天重新装了个新版的eclipse, 结果今天打开一个SWT的项目,突然找不到source/design的图形UI设计的两个切换按钮 我把SWT组件重新装了还是找不到.结果后来发现是因为重装ecl ...
- eclipse Swt编程—窗口小部件widget
1.标签Label // 标签(Label类)组件是SWT中最简单的组件.Label类的构造方法和格式如下: // Label(Composite parent,
- Eclipse swt开发环境搭建
原料: eclipse swt.下载链接为: Eclipse 4.6.2 Release Build: 4.6.2 配置说明: Developing SWT applications using Ec ...
- 使SWT/JFace支持跨平台
由于SWT的实现机制,在不同平台下,必须引用不同swt*.jar. 由于这个瓶颈,我们要为不同的平台编译不同的版本.但是这是可以避免的.这将是本文要讨论的内容. 我一共google到了3种soluti ...
- 使Docker Container支持运行SWT程序
1, 下载安装JDK的docker container 我是从这个源下载已经做好的JDK8的container: https://registry.hub.docker.com/u/dockerfil ...
- org.eclipse.swt.custom.StyledText.getScrollbarsMode()I
错误: org.eclipse.swt.custom.StyledText.getScrollbarsMode()I 解决方法: 1 卸载,并手工清除myeclipse全部文件 2 重新安装myecl ...
- swt controls里的控件list
swt controls里的控件list,怎么显示滚动条,并且滚动条自动移动到最下边时,显示最新内容 package com.jokul; import org.eclipse.swt.widgets ...
- SWT布局管理器
一.充满式布局管理器(FillLayout类) FillLayout类是最简单的布局类,它把组件摆放成一行或者一列,并强制组件大小一致.一般,组件的高度与最高的组件一致,宽度与最宽的组件相同.,它里面 ...
- SWT组件添加事件的四种方式
在我们CS日常开发过程中会经常去为组件添加事件,我们常用的为AWT与SWT.SWT的事件模型是和标准的AWT基本一样的.下面将按照事件的四种写法来实现它. 一.匿名内部类的写法 new MouseAd ...
随机推荐
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO
距离上次发布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了,最近利用空闲时间,把今日头条客户端完善了下.完善的功能一个一个全部实现后,就放整个源码.开发的进度就是按 ...
- Eclipse使用总结
Eclipse使用总结 1.Eclipse中出现无法找到Maven包 症状:出现org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER, 且出现无法找 ...
- css Gradients(渐变)
渐变分为4类 1:线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向 2:径向渐变(Radial Gradients)- 由它们的中心定义 3:对角渐变 4:角度渐变 以 ...
- POJ 3321 Apple Tree DFS序+fenwick
题目大意:有一颗长满苹果的苹果树,有两个操作. 1.询问以一个点为根的子树中有多少个苹果. 2.看看一个点有没有苹果,假设没有苹果.那么那里就立即长出一个苹果(= =!):否则就把那个苹果摘下来. 思 ...
- UML基本架构建模--类概述
Classes 类 Classes are the most important building block of any object-oriented system. A class is ...
- RGB HSV HLS三种色彩模式转换(C语言实现)
Android项目上处理图像的代码(注释全部去掉) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...
- 配置BeanUtils包,同时也是对导入第三包的步骤说明
BeanUtils是由Apache公司开发的针对操作JavaBean的工具包. 对于JavaBean,简单的来说,就是要有一个空参的构造器和对属性的getXXX方法和setXXX方法. 在由JDK提供 ...
- javascript (十二)对象二
JavaScript 中的所有事物都是对象:字符串.数字.数组.日期,等等. 在 JavaScript 中,对象是拥有属性和方法的数据. 属性和方法 属性是与对象相关的值. 方法是能够在对象上执行的动 ...
- vc中改变对话框的背景色
---- 笔者曾在<软件报>2000年第5期中讨论过如何改变控件的颜色,但还有相当一部分的读者来信提问:一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对 ...
- Flex与Java交互(Flex调用java类展示数据)解析xml展示数据
Flex与java通信最简单例子(详细说明了各种需要注意的配置):http://blog.csdn.net/u010011052/article/details/9116869 Flex与java通信 ...