<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    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();
                }

                
    return new Object[0];
            }

            
    public Object[] getChildren(Object parentElement) {
                Itree node 
    = (Itree)parentElement;
                List list 
    = node.getChildren();
                
    if(list == null){
                    
    return new Object[0];
                }

                
    return list.toArray();
            }

            
            
    public boolean hasChildren(Object element) {
                Itree node 
    = (Itree)element;
                List list 
    = node.getChildren();
                
    return !(list == null || list.isEmpty());
            }

            
    //以下三個函數根據需要填充
            public Object getParent(Object element) {
                
    return null;
            }

            
    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            }

            
    public void dispose() {
            }

        }
    2,標簽器:
    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;
            }

        }
    三、好了,準備工作做好了,把上邊的內容利用起來就好了。
    import model.Factory;

    import org.eclipse.jface.viewers.TreeViewer;
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Tree;


    public class TestTreeViewer {
        
        
    private static Tree tree;
        
    public static void main(String[] args) {
            
    final Display display = Display.getDefault();
            
    final Shell shell = new Shell();
            shell.setSize(
    500375);
            shell.setText(
    "SWT Application");
            
    //
            final TreeViewer treeViewer = new TreeViewer(shell, SWT.BORDER|SWT.H_SCROLL);
            tree 
    = treeViewer.getTree();
            tree.setBounds(
    8375264185);
            
            treeViewer.setLabelProvider(
    new TreeLabelProvider());
            treeViewer.setContentProvider(
    new TreeContentProvider());
            treeViewer.setInput(Factory.createTree());
            
            shell.open();
            shell.setLayout(
    new FillLayout());
            shell.layout();
            
    while (!shell.isDisposed()) {
                
    if (!display.readAndDispatch())
                    display.sleep();
            }

        }


    }


    看看是不是已經實現了treeViewer
    四、上邊是簡單的treeViewer,如果我們需要帶checkbox的treeViewer,簡單,只需要更改
    final TreeViewer treeViewer = new TreeViewer(shell, SWT.BORDER|SWT.H_SCROLL);
    把TreeViewer換成CheckboxTreeViewer。這就是mvc的好處了。
    但現實中我們多用ContainerCheckedTreeViewer代替CheckboxTreeViewer,因為這個提供了更多的功能。
    CheckboxTreeViewer是TreeViewer的子類,  ContainerCheckedTreeViewer是CheckboxTreeViewer的子類,所以可以隨便替換。
    替換后:
    final ContainerCheckedTreeViewer treeViewer = new ContainerCheckedTreeViewer(shell, SWT.BORDER|SWT.H_SCROLL);
    五、treeviewer和tableviewer都介紹過了,考慮一下把兩個結合起來是不是我們經常需要的情況。嘗試一下吧。
    六、souce下載:http://www.tkk7.com/Files/dreamstone/jface-6.rar

    posted on 2007-08-05 15:20 dreamstone 閱讀(9116) 評論(3)  編輯  收藏 所屬分類: SWT和插件開發

    評論

    # re: Swt/Jface treeViewer的使用 2008-05-20 18:52 求助

    我的表是id parid name
    怎么實現樹狀啊。大哥快幫我啊。  回復  更多評論   

    # re: Swt/Jface treeViewer的使用 2008-05-20 18:53 求助

    luiguangshui@163.com  回復  更多評論   

    # re: Swt/Jface treeViewer的使用 2010-10-01 19:41 de

    best example I have ever found im Internet  回復  更多評論   

    主站蜘蛛池模板: 久久精品a一国产成人免费网站| 免费国产高清视频| 亚洲码欧美码一区二区三区| 在线观看免费精品国产| a级毛片免费高清毛片视频| 91亚洲国产成人久久精品| 亚洲乱码在线卡一卡二卡新区| 国产麻豆免费观看91| 成在线人免费无码高潮喷水| 亚洲国产美女在线观看| 国产又大又黑又粗免费视频| 好紧我太爽了视频免费国产| 亚洲中文字幕久久久一区| 亚洲中文字幕无码爆乳AV| 日韩欧毛片免费视频| 日日摸夜夜添夜夜免费视频| 久久精品国产亚洲AV麻豆网站| 免费国产成人高清在线观看麻豆| 久久免费视频观看| 在线观看亚洲网站| 亚洲性无码av在线| 亚洲乱码国产一区网址| 成人无码区免费A片视频WWW| 国产做国产爱免费视频| 亚洲夂夂婷婷色拍WW47| 亚洲国产AV无码专区亚洲AV| 国产人成免费视频| 99国产精品永久免费视频| 一级全免费视频播放| 一本色道久久综合亚洲精品蜜桃冫 | 激情亚洲一区国产精品| 亚洲人成网站色在线入口| 成人免费黄色网址| 国产在线精品观看免费观看| 人人狠狠综合久久亚洲| 亚洲成a人片在线观看中文app| 亚洲AV无码专区电影在线观看| 91大神在线免费观看| 国产一级婬片A视频免费观看| 亚洲av成人片在线观看| 亚洲字幕在线观看|