我想在用户单击展开TreeItem的某个节点时,弹出一个对话框,进行一些权限验证,如果通过了,就展开当前节点,如果没通过,则不展开当前节点。试了treeExpanded,但是这个达不到效果,一点击展开就直接展开了,没有验证。

解决方案 »

  1.   

    tree.addTreeListener(new TreeListener() { @Override
    public void treeCollapsed(TreeEvent e) { } @Override
    public void treeExpanded(TreeEvent e) {
    if (targetitem == e.item) {
    MessageBox box = new MessageBox(Display.getDefault()
    .getActiveShell());
    box.open();
    }
    }
    });
      

  2.   

    这个你关闭了MessageBox后还是会展开的,只是在展开前弹出个对话框而已,这样即使验证不通过也是会展开的
      

  3.   

    tree.addTreeListener(new TreeListener() { @Override 
    public void treeCollapsed(TreeEvent e) { } @Override 
    public void treeExpanded(TreeEvent e) { 
    if (targetitem == e.item) { 
    MessageBox box = new MessageBox(Display.getDefault() 
    .getActiveShell()); 
    box.open(); 


    });
      

  4.   

    class AuthTreeItem extends TreeItem {
    public AuthTreeItem(Tree tree, int i) {
    super(tree, i);
    } public void setExpanded(boolean exp) {
    MessageBox box = new MessageBox(Display.getDefault()
    .getActiveShell());
    if (box.open() == SWT.OK) {
    super.setExpanded(exp);
    }
    }
    }
      

  5.   

    需要继承来覆盖setExpanded吗?有没有直接设置的?