<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  回復  更多評論   

    主站蜘蛛池模板: 免费能直接在线观看黄的视频| 亚洲精品二区国产综合野狼| 成全视频高清免费观看电视剧| 国产亚洲精品VA片在线播放| 亚洲色婷婷六月亚洲婷婷6月| 在线a亚洲v天堂网2018| 久久99精品国产免费观看| 亚洲a无码综合a国产av中文| 亚洲精品美女久久久久9999| 亚洲中久无码不卡永久在线观看| 女人与禽交视频免费看| 最近中文字幕高清免费中文字幕mv| 男女拍拍拍免费视频网站| 国产综合成人亚洲区| 亚洲熟妇无码一区二区三区导航| 亚洲福利一区二区三区| 亚洲成AV人片一区二区密柚| 亚洲国产精品成人久久蜜臀| 免费看a级黄色片| 日本免费网址大全在线观看| 99爱在线精品视频免费观看9 | h视频在线观看免费完整版| 中文字幕一区二区三区免费视频 | 国产又大又粗又长免费视频| 成人A片产无码免费视频在线观看| 亚洲第一视频在线观看免费| 无人视频免费观看免费视频| 亚洲日韩欧洲无码av夜夜摸| 亚洲国产成人精品无码久久久久久综合| 黄网址在线永久免费观看| 四虎影视大全免费入口| 国产免费av片在线看| 免费av欧美国产在钱| 免费人成视频在线| 午夜毛片不卡高清免费| 免费黄色大片网站| 国产又黄又爽又猛的免费视频播放 | 最近中文字幕高清免费中文字幕mv| 日韩免费电影网站| 99热这里有免费国产精品| 精品熟女少妇av免费久久|