mysource-jface

Swt/Jface treeViewer的使用

上边介绍了,tableviewer,这里介绍一下treeViewer,总的流程类似。
一、构造一个树形结构的数据出来,这里选择国家、城市、人来构造一个树形结构,代码如下:
1,定义一个接口

package  model;

import  java.util.List;

public   interface  Itree  {
    
public String getName();
    
public void setName(String name);
    
public void setChildren(List Children);
    
public List getChildren();
}

2,国家

package  model;

import  java.util.ArrayList;
import  java.util.List;

public   class  Country  implements  Itree {
    
private Long id;
    
private String name;
    
private List children = new ArrayList();
    
public Country(){
    }

    
public Country(String name){
        
this.name = name;
    }

    
public List getChildren() {
        
return children;
    }

    
public void setChildren(List children) {
        
this.children = children;
    }

    
public Long getId() {
        
return id;
    }

    
public void setId(Long id) {
        
this.id = id;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
}


3,城市

package  model;

import  java.util.ArrayList;
import  java.util.List;

public   class  City  implements  Itree {
    
private Long id;
    
private String name;
    
private List children = new ArrayList();
    
public City(){
    }

    
public City(String name){
        
this.name = name;
    }

    
public List getChildren() {
        
return children;
    }

    
public void setChildren(List children) {
        
this.children = children;
    }

    
public Long getId() {
        
return id;
    }

    
public void setId(Long id) {
        
this.id = id;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

}


4,人

package  model;

import  java.util.ArrayList;
import  java.util.List;

public   class  People  implements  Itree {
    
private Long id;
    
private String name;
    
public People(){
    }

    
public People(String name){
        
this.name = name;
    }

    
public List getChildren() {
        
return null;
    }

    
public void setChildren(List children) {
    }

    
public Long getId() {
        
return id;
    }

    
public void setId(Long id) {
        
this.id = id;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

}


5,把这些元素组织起来

package  model;

import  java.util.ArrayList;
import  java.util.List;

public   class  Factory  {
    @SuppressWarnings(
"unchecked")
    
public static List createTree(){
        
//生成国家
        Country cn = new Country("中国");
        Country us 
= new Country("美国");
        Country jp 
= new Country("日本");
        
//生成城市
        City beijing  = new City("北京");
        City shanghai 
= new City("上海");
        City newyork 
= new City("纽约");
        City la 
= new City("洛杉矶");
        City tokyo 
= new City("东京");
        City osaka 
= new City("大阪");
        
//北京人
        ArrayList list = new ArrayList();
        list.add(
new People("张三"));
        list.add(
new People("李四"));
        list.add(
new People("王五"));
        beijing.setChildren(list);
        
//上海人
        list = new ArrayList();
        list.add(
new People("翠花"));
        list.add(
new People("小红"));
        list.add(
new People("小崔"));
        shanghai.setChildren(list);
        
//纽约人
        list = new ArrayList();
        list.add(
new People("tom"));
        list.add(
new People("rose"));
        list.add(
new People("john"));
        newyork.setChildren(list);
        
//洛杉矶人
        list = new ArrayList();
        list.add(
new People("Sofia"));
        list.add(
new People("sarah"));
        list.add(
new People("Jennifer"));
        la.setChildren(list);
        
//东京人
        list = new ArrayList();
        list.add(
new People("渡边"));
        list.add(
new People("鬼冢"));
        list.add(
new People("山本"));
        tokyo.setChildren(list);
        
//大阪人
        list = new ArrayList();
        list.add(
new People("奈奈子"));
        list.add(
new People("菜菜子"));
        list.add(
new People("新垣结衣"));
        osaka.setChildren(list);
        
        
//关联城市与国家
        
//中国
        ArrayList citys = new ArrayList();
        citys.add(beijing);
        citys.add(shanghai);
        cn.setChildren(citys);
        
//美国
        citys = new ArrayList();
        citys.add(newyork);
        citys.add(la);
        us.setChildren(citys);
        
//日本
        citys = new ArrayList();
        citys.add(tokyo);
        citys.add(osaka);
        jp.setChildren(citys);
        
//国家列表
        ArrayList countrys = new ArrayList();
        countrys.add(cn);
        countrys.add(us);
        countrys.add(jp);
        
return countrys;
    }

}


二、定义内容器和标签器
1,内容器

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  {
        
        
public Object[] getElements(Object inputElement) {
            
if (inputElement instanceof List){
                List input 
= (List)inputElement;
                
return input.toArray();
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值