先看一下效果图:
代码结构是这样的:
好的,现在看一下代码:
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中使用OLE操纵Excel入门培训文档,里面整理了很多资源,下载的请使劲戳
SWT和Jface开发使用必使用jar包之:equinox包,配合其他jar包一起使用
64位windows操作系统使用的SWT库
swt注册码使用-----swt
SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置
NULL 博文链接:https://wenhai.iteye.com/blog/697993
使用Eclipse进行SWT编程 使用Eclipse进行SWT编程 (转载)
下载编译的SWT库,版本号4.911,包含多个版本: org.eclipse.swt.cocoa.macosx.x86_64 org.eclipse.swt.gtk.linux.aarch64 org.eclipse.swt.gtk.linux.arm org.eclipse.swt.gtk.linux.ppc64le org.eclipse.swt.gtk....
SWT examples,SWT官方例子:http://www.eclipse.org/swt/examples.php 该页面所要下载的例子 其中,swt的例子在\plugins\org.eclipse.swt.examples.source_3.7.0.v3740f.jar中
SWT基本控件组件介绍及实例,按钮(button),选项卡(tabFolder)等编程
SWT原生按钮不够美观,本案例实现自定义圆形按钮,代码可直接下载使用。
org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....
Eclipse中使用SWT进行界面设计 1. 为什么要使用SWT? 2. SWT应用程序的组成 3. 进行SWT开发前的环境设置
swt工具文档 swt工具文档 swt工具文档 swt工具文档 swt工具文档 swt工具文档
swt 基础教程 swt 基础教程 swt 基础教程swt 基础教程swt 基础教程
SWT本身仅仅是Eclipse组织为了开发 Eclipse IDE环境所编写的一组底层图形界面 API。或许是无心插柳,或是有意为之,至今为止,SWT无论是在性能和外观上,都超越了SUN公司提供的AWT和SWING。目前Eclipse IDE已经开发...
SWT-Internal-Video使用SWT技术对视频的常用显示功能进行了实现和封装,并提供了API。 它的接口之灵活性可以满足视频显示上的很多要求 与 情况。 SWT-Internal-Video解决的是程序与视频设备DVR/DVS之间的链接,并...
swt框架 适用与window下java窗口开发~~~~
SWT和Jface开发使用必使用jar包之:commands包,配合其他jar包一起使用
Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...