`

SWT的TreeVierer的使用

    博客分类:
  • SWT
 
阅读更多

先看一下效果图:

代码结构是这样的:

好的,现在看一下代码:

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-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    描述中提到的“64位windows操作系统使用的SWT库”进一步确认了这一点。 SWT的设计目标是提供一个与平台相关的、高效的GUI库,它通过直接调用操作系统API来实现,而不是像Java Swing那样依赖Java抽象窗口工具包(AWT...

    Eclipse中使用SWT进行界面设计

    在Eclipse中使用SWT进行界面设计涉及到一系列关键概念和技术,包括SWT的起源与优势、SWT应用程序的组成以及开发环境的配置。 1. 为什么要使用SWT? SWT,全称Standard Widget Toolkit,是由IBM开发的一个跨平台的...

    如何在SWT中使用AWT、SWING组件

    这篇文章将详细探讨如何在SWT环境中集成并使用AWT和SWING组件。 首先,SWT是Eclipse的原生GUI库,它提供了与操作系统更紧密的集成,因此可以创建更原生的外观和感觉。然而,AWT和SWING提供了更多的组件和功能,例如...

    在SWT中使用OLE操纵Excel入门培训文档

    在SWT中使用OLE操纵Excel入门培训文档,里面整理了很多资源,下载的请使劲戳

    java SWT教程

    2. 解压库文件:在DOS环境下,使用`jar xf`命令解压SWT库,会得到若干DLL文件,这些是SWT与操作系统交互所需的原生库。 3. 设置环境:有三种方式确保Java程序能找到这些DLL文件,包括复制到JRE的bin目录、设置PATH...

    SWT和Jface开发使用必使用jar包

    SWT和Jface开发使用必使用jar包之:equinox包,配合其他jar包一起使用

    Eclipse下使用swt

    ### Eclipse 下使用 SWT 的知识点详解 #### 一、概述 Eclipse 是一款广泛使用的开源集成开发环境(IDE),尤其在 Java 开发领域占有重要地位。随着 Eclipse Visual Editor Project (VEP) 的出现,Eclipse 不仅能...

    Swt的API使用说明

    **Swt的API使用说明** Swt(Standard Widget Toolkit)是Eclipse基金会开发的一个开源GUI库,主要用于构建原生外观的Java应用程序。Swt API提供了丰富的控件和功能,允许开发者创建与操作系统环境无缝集成的应用...

    使Excel嵌入到SWT窗口中

    使Excel嵌入到SWT窗口中 知识点一:Eclipse版本和jdk版本的选择 ...同时,我们也讨论了Eclipse版本和jdk版本的选择、SWT的使用、OLE技术的使用、OleFrame和OleClientSite的使用、OLE对象的Id和OLE对象的动作等知识点。

    使用Eclipse进行SWT编程

    【使用Eclipse进行SWT编程】 SWT,全称Standard Widget Toolkit,是由IBM开发的一套跨平台的图形用户界面(GUI)开发框架。这个框架的诞生源于Java早期GUI框架的局限性。当时,Sun Microsystems已经推出了AWT...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    - **Classpath变量**:如果计划开发多个使用SWT的项目,建议创建一个Classpath变量指向`swt.jar`的位置,以便在不同项目中重用。 - **持续性问题**:需要注意的是,上述设置的Classpath和原生库路径并不会自动应用于...

    swt注册码使用

    swt注册码使用-----swt

    swt源码和jar包dj-native-swing-swt.jar

    需要在32为浏览器中使用",这意味着这个库是针对32位系统的,如果你的应用程序或开发环境是32位的,你需要使用这个版本的SWT库才能正常运行。同时,"src中为源码,可以直接在项目中引用"意味着除了预编译的jar包之外...

    swt-datepicker-1.01.zip

    使用 SWT 的 `DatePicker`,开发者可以通过以下步骤: 1. 导入必要的库:`import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.DatePicker;` 2. 创建...

    swt-api swt DOC

    这个文档可能是开发者们在使用SWT进行界面设计时的重要参考资料。 【描述】"java界面编程,swt的开发DOC,谁用谁知道,一般人我不告诉他" 提示我们SWT是Java编程中用于创建桌面应用用户界面的一种工具包。它提供了...

    SWT源码 swt.jar

    使用SWT的开发者需要了解如何在项目中正确引入"swt.jar",配置项目的构建路径,并根据目标平台选择正确的SWT库。此外,由于SWT与操作系统紧密相关,所以在跨平台开发时需要特别注意兼容性和适配问题。 总的来说,...

    使用Eclipse进行SWT编程.pdf

    "使用Eclipse进行SWT编程" SWT(Standard Widget Toolkit)是一个跨平台的GUI开发框架,由IBM开发。SWT解决了AWT和Swing框架中的问题,使用JNI访问本地窗口组件(native widgets),并且可以模拟不能获取的窗口组件...

    swt教程 有关SWT怎么应用

    在本文中,我们将深入探讨SWT(Standard Widget Toolkit)的应用,以及如何在Java应用程序中使用它。SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)...

    DJNativeSwing-SWT.jar、DJNativeSwing.jar、swt-win-x64.jar

    首先,DJNativeSwing是一个Java库,它允许开发者在Java Swing应用程序中使用SWT组件。Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更丰富的用户界面组件和更现代的外观。而SWT则是一个开源的GUI库,它...

    java swt自定义控件

    本文将深入探讨在Java中使用SWT进行自定义控件的开发。 ### 1. SWT概述 SWT是一个开源的Java库,它的目标是提供与原生GUI库(如Windows的Win32 API,Mac OS的Cocoa,Linux的GTK+)类似的性能和功能。SWT使用JNI...

Global site tag (gtag.js) - Google Analytics