<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://m.tkk7.com/Files/dreamstone/jface-6.rar

    posted on 2007-08-05 15:20 dreamstone 閱讀(9126) 評論(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  回復  更多評論   

    主站蜘蛛池模板: 亚洲人成图片网站| 四虎国产精品永免费| 国产精品四虎在线观看免费 | 免费观看黄色的网站| 亚洲国产精品久久久久秋霞小| 国产一级一片免费播放i| 中文字幕一区二区免费| 美女扒开屁股让男人桶爽免费| 国产av无码专区亚洲av果冻传媒| 中文字幕亚洲免费无线观看日本| 亚洲国产日韩精品| 亚洲精品无码MV在线观看| 无码免费午夜福利片在线| 中文字幕手机在线免费看电影| 亚洲国产成人爱av在线播放| 一级成人a毛片免费播放| 亚洲免费网站观看视频| 亚洲AV无码乱码在线观看富二代| 成年在线观看免费人视频草莓| 99久久免费国产精品热| 久久久久亚洲国产| 亚洲高清视频在线观看| 全部免费国产潢色一级| 1a级毛片免费观看| 三级网站在线免费观看| 国产精品亚洲av色欲三区| 亚洲精品视频在线观看视频| 中文字幕中韩乱码亚洲大片| 国产精品免费观看久久| 免费国产黄网站在线观看| 一个人看的www视频免费在线观看| 亚洲AV无码一区二区三区牛牛| 亚洲色精品vr一区二区三区| 国产免费观看青青草原网站| 青草草色A免费观看在线| 波多野结衣免费一区视频 | 国产亚洲美女精品久久久久| 亚洲麻豆精品果冻传媒| 亚洲精品狼友在线播放| 国产成人亚洲综合无码| 国产成人免费ā片在线观看|