网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 新手入门 > 基础入门 > 一个非常实用的关于checkboxtree小例子  

一个非常实用的关于checkboxtree小例子

2008-06-15  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

 

package tree; 中国网管联盟bitsCN.com

    import java.util.ArrayList; 网管u家u.bitsCN.com

    import java.util.HashMap; 网管bitscn_com

    import java.util.List;

网管u家u.bitsCN.com

    import java.util.Map;

网管下载dl.bitscn.com

    import org.eclipse.jface.viewers.CheckboxTreeViewer;

网管bitscn_com

    import org.eclipse.swt.SWT; 网管网www_bitscn_com

    import org.eclipse.swt.widgets.Display; 网管论坛bbs_bitsCN_com

    import org.eclipse.swt.widgets.Item; 中国网管论坛bbs.bitsCN.com

    import org.eclipse.swt.widgets.Shell; 网管下载dl.bitscn.com

    import org.eclipse.swt.widgets.Tree;

网管bitscn_com

    import org.eclipse.swt.widgets.TreeItem;

网管网www_bitscn_com

    import org.eclipse.swt.widgets.Widget;

网管下载dl.bitscn.com

    public class TE {

网管网www_bitscn_com

        private Tree tree;

网管联盟bitsCN@com

        protected Shell shell; 网管网www_bitscn_com

        /** 中国网管论坛bbs.bitsCN.com

         * Launch the application 网管联盟bitsCN_com

         * @param args

中国网管联盟bitsCN.com

         */ 网管u家u.bitsCN.com

        public static void main(String[] args) { 网管网www.bitscn.com

            try {

网管下载dl.bitscn.com

                TE window = new TE();

网管网www_bitscn_com

                window.open();

网管网www.bitscn.com

            } catch (Exception e) {

中国网管联盟bitsCN.com

                e.printStackTrace(); 网管下载dl.bitscn.com

            }

网管网www_bitscn_com

        }

中国网管论坛bbs.bitsCN.com

        /** 网管bitscn_com

         * Open the window 网管联盟bitsCN@com

         */

中国网管论坛bbs.bitsCN.com

        public void open() { 网管联盟bitsCN@com

            final Display display = Display.getDefault(); 网管bitscn_com

            createContents();

中国网管论坛bbs.bitsCN.com

            shell.open(); 网管网www_bitscn_com

            shell.layout();

网管联盟bitsCN@com

            while (!shell.isDisposed()) {

网管bitscn_com

                if (!display.readAndDispatch()) 网管联盟bitsCN@com

                    display.sleep();

网管联盟bitsCN_com

            } 网管u家u.bitscn@com

        } 中国网管论坛bbs.bitsCN.com

        /**

网管联盟bitsCN@com

         * Create contents of the window

网管论坛bbs_bitsCN_com

         */ 中国网管论坛bbs.bitsCN.com

        protected void createContents() {

网管论坛bbs_bitsCN_com

            shell = new Shell();

网管论坛bbs_bitsCN_com

            shell.setSize(500, 375);

网管论坛bbs_bitsCN_com

            shell.setText("SWT Application");

网管联盟bitsCN_com

            final CheckboxTreeViewer checkboxTreeViewer = new CheckboxTreeViewer(shell, SWT.BORDER);

网管u家u.bitsCN.com

            tree = checkboxTreeViewer.getTree(); 网管u家u.bitscn@com

            tree.setBounds(23, 48, 459, 260); 网管网www.bitscn.com

            checkboxTreeViewer.setContentProvider(new Content());

网管论坛bbs_bitsCN_com

            checkboxTreeViewer.setLabelProvider(new Label()); 网管下载dl.bitscn.com

            checkboxTreeViewer.setInput(getInputContent());

网管论坛bbs_bitsCN_com

    /*      Parent []p = new Parent[1];

中国网管联盟bitsCN.com

            p[0] = new Parent();

网管联盟bitsCN_com

            p[0].setName("小一");

网管下载dl.bitscn.com

            List<Child> ls = new ArrayList<Child>();

网管u家u.bitsCN.com

            Child c1 = new Child(); 网管u家u.bitsCN.com

            c1.setName("小一一");

网管联盟bitsCN_com

            ls.add(c1);

网管联盟bitsCN_com

            p[0].setChild(ls);*/

网管u家u.bitscn@com

            checkboxTreeViewer.expandAll();

中国网管论坛bbs.bitsCN.com

            String []obj = new String[2];

网管u家u.bitscn@com

            obj[0] = "小一";

网管联盟bitsCN_com

            obj[1] = "小二二"; 网管bitscn_com

            setChecked(obj, tree);

网管u家u.bitsCN.com

            // 网管bitscn_com

        } 网管bitscn_com

        private void setChecked(String [] obj, Tree tree) { 网管论坛bbs_bitsCN_com

            Map map = new HashMap(); 中国网管论坛bbs.bitsCN.com

            for(int i = 0; i < obj.length; i++) { 中国网管论坛bbs.bitsCN.com

                map.put(obj[i], obj); 网管论坛bbs_bitsCN_com

            } 网管u家u.bitsCN.com

            internalSetChecked(map, tree); 中国网管论坛bbs.bitsCN.com

        }

网管bitscn_com

        private Item[] getChildren(Widget o) { 网管网www_bitscn_com

            if (o instanceof TreeItem) {

网管网www_bitscn_com

                return ((TreeItem) o).getItems(); 网管网www.bitscn.com

            }

网管网www.bitscn.com

            if (o instanceof Tree) {

网管联盟bitsCN@com

                return ((Tree) o).getItems(); 网管网www_bitscn_com

            }

网管网www_bitscn_com

            return null;

网管联盟bitsCN_com

        } 网管u家u.bitsCN.com

        private void internalSetChecked(Map checkedElements,

网管网www.bitscn.com

                Widget widget) { 网管bitscn_com

            Item[] items = getChildren(widget); 网管联盟bitsCN_com

            for (int i = 0; i < items.length; i++) {

网管下载dl.bitscn.com

                TreeItem item = (TreeItem) items[i]; 网管网www_bitscn_com

                Object data = item.getData();

网管联盟bitsCN_com

                if (data != null) { 网管联盟bitsCN@com

                    String temp = ((IName)data).getName(); 网管u家u.bitsCN.com

                    boolean checked = checkedElements.containsKey(temp);

网管论坛bbs_bitsCN_com

                    if (checked != item.getChecked()) { 网管联盟bitsCN@com

                        item.setChecked(checked); 网管网www_bitscn_com

                    }

网管网www_bitscn_com

                } 网管下载dl.bitscn.com

                internalSetChecked(checkedElements, item); 网管论坛bbs_bitsCN_com

            } 网管联盟bitsCN_com

        }

中国网管论坛bbs.bitsCN.com

        private List getInputContent() { 网管下载dl.bitscn.com

            List<Parent> lst = new ArrayList<Parent>();

网管u家u.bitscn@com

            Parent p1 = new Parent();

中国网管联盟bitsCN.com

            p1.setName("小一"); 中国网管论坛bbs.bitsCN.com

            List<Child> ls = new ArrayList<Child>();

网管联盟bitsCN_com

            Child c1 = new Child();

网管下载dl.bitscn.com

            c1.setName("小一一"); 网管网www_bitscn_com

            ls.add(c1);

网管u家u.bitsCN.com

            p1.setChild(ls); 网管网www_bitscn_com

            Parent p2 = new Parent();

网管u家u.bitscn@com

            p2.setName("小二"); 网管u家u.bitsCN.com

            List<Child> lss = new ArrayList<Child>(); 网管网www.bitscn.com

            Child c2 = new Child(); 网管下载dl.bitscn.com

            c2.setName("小二二"); 中国网管论坛bbs.bitsCN.com

            lss.add(c2); 网管论坛bbs_bitsCN_com

            p2.setChild(lss);

网管u家u.bitscn@com

            lst.add(p1); 网管联盟bitsCN_com

            lst.add(p2); 中国网管论坛bbs.bitsCN.com

            return lst; 网管u家u.bitscn@com

        }

网管下载dl.bitscn.com

    }

中国网管论坛bbs.bitsCN.com

网管u家u.bitscn@com


TAGs
 上一篇:JTable之单元格显示Tip   下一篇:开发过程中常见问题
一个非常实用的关于checkboxtree小例子 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: