先看一下效果图:
代码结构是这样的:
好的,现在看一下代码:
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(); } } }
//******************************************************************************************************************************
需要注意的是,要添加如下的包:
相关推荐
描述中提到的“64位windows操作系统使用的SWT库”进一步确认了这一点。 SWT的设计目标是提供一个与平台相关的、高效的GUI库,它通过直接调用操作系统API来实现,而不是像Java Swing那样依赖Java抽象窗口工具包(AWT...
在Eclipse中使用SWT进行界面设计涉及到一系列关键概念和技术,包括SWT的起源与优势、SWT应用程序的组成以及开发环境的配置。 1. 为什么要使用SWT? SWT,全称Standard Widget Toolkit,是由IBM开发的一个跨平台的...
这篇文章将详细探讨如何在SWT环境中集成并使用AWT和SWING组件。 首先,SWT是Eclipse的原生GUI库,它提供了与操作系统更紧密的集成,因此可以创建更原生的外观和感觉。然而,AWT和SWING提供了更多的组件和功能,例如...
在SWT中使用OLE操纵Excel入门培训文档,里面整理了很多资源,下载的请使劲戳
2. 解压库文件:在DOS环境下,使用`jar xf`命令解压SWT库,会得到若干DLL文件,这些是SWT与操作系统交互所需的原生库。 3. 设置环境:有三种方式确保Java程序能找到这些DLL文件,包括复制到JRE的bin目录、设置PATH...
SWT和Jface开发使用必使用jar包之:equinox包,配合其他jar包一起使用
### Eclipse 下使用 SWT 的知识点详解 #### 一、概述 Eclipse 是一款广泛使用的开源集成开发环境(IDE),尤其在 Java 开发领域占有重要地位。随着 Eclipse Visual Editor Project (VEP) 的出现,Eclipse 不仅能...
**Swt的API使用说明** Swt(Standard Widget Toolkit)是Eclipse基金会开发的一个开源GUI库,主要用于构建原生外观的Java应用程序。Swt API提供了丰富的控件和功能,允许开发者创建与操作系统环境无缝集成的应用...
使Excel嵌入到SWT窗口中 知识点一:Eclipse版本和jdk版本的选择 ...同时,我们也讨论了Eclipse版本和jdk版本的选择、SWT的使用、OLE技术的使用、OleFrame和OleClientSite的使用、OLE对象的Id和OLE对象的动作等知识点。
【使用Eclipse进行SWT编程】 SWT,全称Standard Widget Toolkit,是由IBM开发的一套跨平台的图形用户界面(GUI)开发框架。这个框架的诞生源于Java早期GUI框架的局限性。当时,Sun Microsystems已经推出了AWT...
- **Classpath变量**:如果计划开发多个使用SWT的项目,建议创建一个Classpath变量指向`swt.jar`的位置,以便在不同项目中重用。 - **持续性问题**:需要注意的是,上述设置的Classpath和原生库路径并不会自动应用于...
swt注册码使用-----swt
需要在32为浏览器中使用",这意味着这个库是针对32位系统的,如果你的应用程序或开发环境是32位的,你需要使用这个版本的SWT库才能正常运行。同时,"src中为源码,可以直接在项目中引用"意味着除了预编译的jar包之外...
使用 SWT 的 `DatePicker`,开发者可以通过以下步骤: 1. 导入必要的库:`import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.DatePicker;` 2. 创建...
这个文档可能是开发者们在使用SWT进行界面设计时的重要参考资料。 【描述】"java界面编程,swt的开发DOC,谁用谁知道,一般人我不告诉他" 提示我们SWT是Java编程中用于创建桌面应用用户界面的一种工具包。它提供了...
使用SWT的开发者需要了解如何在项目中正确引入"swt.jar",配置项目的构建路径,并根据目标平台选择正确的SWT库。此外,由于SWT与操作系统紧密相关,所以在跨平台开发时需要特别注意兼容性和适配问题。 总的来说,...
"使用Eclipse进行SWT编程" SWT(Standard Widget Toolkit)是一个跨平台的GUI开发框架,由IBM开发。SWT解决了AWT和Swing框架中的问题,使用JNI访问本地窗口组件(native widgets),并且可以模拟不能获取的窗口组件...
在本文中,我们将深入探讨SWT(Standard Widget Toolkit)的应用,以及如何在Java应用程序中使用它。SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)...
首先,DJNativeSwing是一个Java库,它允许开发者在Java Swing应用程序中使用SWT组件。Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更丰富的用户界面组件和更现代的外观。而SWT则是一个开源的GUI库,它...
本文将深入探讨在Java中使用SWT进行自定义控件的开发。 ### 1. SWT概述 SWT是一个开源的Java库,它的目标是提供与原生GUI库(如Windows的Win32 API,Mac OS的Cocoa,Linux的GTK+)类似的性能和功能。SWT使用JNI...