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

 

package tree;

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    import org.eclipse.jface.viewers.CheckboxTreeViewer;

    import org.eclipse.swt.SWT;

    import org.eclipse.swt.widgets.Display;

    import org.eclipse.swt.widgets.Item;

    import org.eclipse.swt.widgets.Shell;

    import org.eclipse.swt.widgets.Tree;

    import org.eclipse.swt.widgets.TreeItem;

    import org.eclipse.swt.widgets.Widget;

    public class TE {

        private Tree tree;

        protected Shell shell;

        /**

         * Launch the application

         * @param args

         */

        public static void main(String[] args) {

            try {

                TE window = new TE();

                window.open();

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

        /**

         * Open the window

         */

        public void open() {

            final Display display = Display.getDefault();

            createContents();

            shell.open();

            shell.layout();

            while (!shell.isDisposed()) {

                if (!display.readAndDispatch())

                    display.sleep();

            }

        }

        /**

         * Create contents of the window

         */

        protected void createContents() {

            shell = new Shell();

            shell.setSize(500, 375);

            shell.setText("SWT Application");

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

            tree = checkboxTreeViewer.getTree();

            tree.setBounds(23, 48, 459, 260);

            checkboxTreeViewer.setContentProvider(new Content());

            checkboxTreeViewer.setLabelProvider(new Label());

            checkboxTreeViewer.setInput(getInputContent());

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

            p[0] = new Parent();

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

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

            Child c1 = new Child();

            c1.setName("小一一");

            ls.add(c1);

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

            checkboxTreeViewer.expandAll();

            String []obj = new String[2];

            obj[0] = "小一";

            obj[1] = "小二二";

            setChecked(obj, tree);

            //

        }

        private void setChecked(String [] obj, Tree tree) {

            Map map = new HashMap();

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

                map.put(obj[i], obj);

            }

            internalSetChecked(map, tree);

        }

        private Item[] getChildren(Widget o) {

            if (o instanceof TreeItem) {

                return ((TreeItem) o).getItems();

            }

            if (o instanceof Tree) {

                return ((Tree) o).getItems();

            }

            return null;

        }

        private void internalSetChecked(Map checkedElements,

                Widget widget) {

            Item[] items = getChildren(widget);

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

                TreeItem item = (TreeItem) items[i];

                Object data = item.getData();

                if (data != null) {

                    String temp = ((IName)data).getName();

                    boolean checked = checkedElements.containsKey(temp);

                    if (checked != item.getChecked()) {

                        item.setChecked(checked);

                    }

                }

                internalSetChecked(checkedElements, item);

            }

        }

        private List getInputContent() {

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

            Parent p1 = new Parent();

            p1.setName("小一");

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

            Child c1 = new Child();

            c1.setName("小一一");

            ls.add(c1);

            p1.setChild(ls);

            Parent p2 = new Parent();

            p2.setName("小二");

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

            Child c2 = new Child();

            c2.setName("小二二");

            lss.add(c2);

            p2.setChild(lss);

            lst.add(p1);

            lst.add(p2);

            return lst;

        }

    }


文章转载自网管之家:http://www.bitscn.com/pdb/java/200806/144033.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值