//树
tree = new Tree(CITY, SWT.CHECK | SWT.BORDER );
//父节点
TreeItem child1 = new TreeItem(tree, SWT.NONE);
         child1.setText("ADD");
//子节点
TreeItem sub = new TreeItem(child1 , SWT.NONE);
         sub.setText("1");现在要获取父节点child1的复选框的选中事件,请问怎么做?
TreeItem没有选中事件。
不使用TreeView等控件。
很急,希望高手帮忙。谢谢。

解决方案 »

  1.   


    能否写一个简单的demo,大家好根据这个demo进行修改.查看问题...
      

  2.   

    okpublic class CommonDlg extends Dialog
    {
        
        private Tree tree;
        
        protected Object result;
        
        protected Shell shell;
        
        private TreeItem child1;
        
        private TreeItem child2;
        
        private TreeItem child3;
            public CommonDlg(Shell parent, int style)
        {
            super(parent, style);
        }
            public CommonDlg(Shell parent)
        {
            this(parent, SWT.NONE);
        }
            public Object open()
        {
            createContents();
            shell.open();
            shell.layout();
            Display display = getParent().getDisplay();
            while (!shell.isDisposed())
            {
                if (!display.readAndDispatch())
                {
                    display.sleep();
                }
            }
            return result;
        }
        
          protected void createContents()
        {
            shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
            shell.setSize(743, 579);
            shell.setText(Title);
            
            final TabFolder tabFolder = new TabFolder(shell, SWT.NONE);
            tabFolder.setBounds(20, 10, 704, 498);
            
            final TabItem Item = new TabItem(tabFolder, SWT.NONE);
            Site_Item.setText("AAA");
            
            final Group BBB = new Group(tabFolder, SWT.NONE);
            Site_Item.setControl(Item);
            
            tree = new Tree(BBB, SWT.CHECK | SWT.BORDER);
            tree.setLinesVisible(true);
            tree.setHeaderVisible(true);
            tree.setBounds(0, 21, 344, 447);
            
            TreeColumn nameTreeColumn;
            nameTreeColumn = new TreeColumn(tree, SWT.CENTER);
            nameTreeColumn.setText("Key");
            nameTreeColumn.setWidth(130);
            
            TreeColumn nameTreeColumn1;
            nameTreeColumn1 = new TreeColumn(tree, SWT.CENTER);
            nameTreeColumn1.setText("Value");
            nameTreeColumn1.setWidth(212);
            
      TreeItem sub = new TreeItem(child1 , SWT.NONE);
            sub.setText("1");
           
            child2 = new TreeItem(tree, SWT.NONE);
            child2.setForeground(0, Display.getCurrent().getSystemColor(SWT.COLOR_DARK_RED));
            child2.setText("delete");        
            child3 = new TreeItem(tree, SWT.NONE);
            child3.setForeground(0, Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN));
            child3.setText("modify");           
           
                }
    }
    着急啊。
      

  3.   

    试试TreeItem   getChecked();
    child1.getChecked();
      

  4.   

    getChecked()再与getGrayed()结合判断
    可以判断勾选,半勾选,不勾选三种状态
      

  5.   


    自己添加监听事件    public static void main(String[] args)
        {
            final Display display = new Display();
            final Shell shell = new Shell(display);
            shell.setText("Tree Sample");
            shell.setLayout(new FillLayout());        final Tree tree = new Tree(shell, SWT.BORDER | SWT.SINGLE);
            TreeItem root = new TreeItem(tree, SWT.NULL);
            root.setText("根节点");        TreeItem child1 = new TreeItem(root, SWT.NULL);
            child1.setText("子孙1");        tree.addSelectionListener(new SelectionListener() {

    @Override
    public void widgetSelected(SelectionEvent arg0) {
    System.out.println(arg0.item.toString());
    }

    @Override
    public void widgetDefaultSelected(SelectionEvent arg0) {
    System.out.println(arg0.item.toString());
    }
    });
            
            shell.setSize(200, 150);
            shell.open();
            while (!shell.isDisposed())
            {
                if (!display.readAndDispatch())
                {
                    display.sleep();
                }
            }        display.dispose();
        }
      

  6.   

    自己搞定了,为啥每次都这样。。分送你了。tree.addSelectionListener(new SelectionAdapter()
            {
                @Override
                public void widgetSelected(final SelectionEvent e)
                {
                    
                    TreeItem ti = (TreeItem)e.item;
                    if (ti.equals(child1))
                    {
                        if (child1.getChecked())
                        {
                            setTreeItemAllCheck(child1);
                        }
                        
                        else
                        {
                            setTreeItemAllDisCheck(child1);
                            
                        }
                        return;
                    }
                    if (ti.equals(child2))
                    {
                        if (child2.getChecked())
                        {
                            setTreeItemAllCheck(child2);
                        }
                        
                        else
                        {
                            setTreeItemAllDisCheck(child2);
                            
                        }
                        return;
                    }
                    if (ti.equals(child3))
                    {
                        if (child3.getChecked())
                        {
                            setTreeItemAllCheck(child3);
                        }
                        
                        else
                        {
                            setTreeItemAllDisCheck(child3);
                            
                        }
                        return;
                    }
                    
                }
            });
      

  7.   

    1. 说的稍微有点模糊,理解和你稍微有点偏差。(有个复选框,不知道你表达的意思是特指某个复选框被选中还是某个节点是否选中高亮)
    2. 提供简单的demo是别人定位,修改,查找问题最快捷的方式。不然别人还得自己写一个demo来测试问题。