【问题标题】:Java SWT get bounds of custom element in TreeViewJava SWT 获取 TreeView 中自定义元素的边界
【发布时间】:2016-04-25 16:29:20
【问题描述】:

我创建了一个 TreeViewContentProvider 和自定义树元素。 我还在TreeView 中添加了ISelectionChangedListener

我想添加一个MouseListener,检测树的元素是否被右键单击并显示一个弹出菜单。 如果单击树周围的白色区域,我不想显示弹出菜单。 菜单通过 plugin.xml 中的Extensions 添加。

我现在如何评估 tree 元素是否被右键单击,以便显示弹出菜单(可能在 plugin.xml 中使用 visibleWhen)? 我也想清除选择,如果在TreeView的白色区域检测到右键。

【问题讨论】:

    标签: java tree swt selection treeviewer


    【解决方案1】:

    好吧,我没有意识到我仍然可以使用tree.getItem(...)。 所以这是我完整的MouseListener

    treeOPCUA.addMouseListener(new MouseListener()
    {
        @Override
        public void mouseUp(MouseEvent e)
        {
            if(e.button == 3 && rightMouseClicked == true)
                rightMouseClicked = false;
        }
    
        @Override
        public void mouseDown(MouseEvent e)
        {
            if(e.button == 3 && rightMouseClicked == false)
                rightMouseClicked = true;
            if(treeOPCUA.getItem(new Point(e.x, e.y)) == null)
                viewer.setSelection(null);
        }
    
        @Override
        public void mouseDoubleClick(MouseEvent e)
        {
            viewer.setExpandedState(e.getSource(), true);
        }
    });
    

    使用boolean 变量“rightMouseClicked”,我在ISelectionChangedListener 中检测到是否单击了鼠标右键:

    if(event.getSelection() instanceof IStructuredSelection && !rightMouseClicked)
    

    我希望这个答案对任何人都有帮助。

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      相关资源
      最近更新 更多