1

我有一个treeViewer,我只想在按下鼠标时执行一些代码(doSomething()方法),而不是在鼠标按下时。即使触发了鼠标按下,以下代码也会执行它,因为已经触发了 selectionlistener。我应该怎么做才能获得确切的行为?

    treeViewer.getTree().addMouseListener(new MouseListener() {

        @Override
        public void mouseUp(MouseEvent e) {
            doSomething()
        }

        @Override
        public void mouseDown(MouseEvent e) {
            // nothing happens
        }

        @Override
        public void mouseDoubleClick(MouseEvent e) {
            // nothing happens
        }
    });

    treeViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            doSomething()
        }
    });
4

1 回答 1

0

试试这个,假设查看器是您的 TreeViewer,但是当鼠标在另一个控件上操作时它不起作用。

viewer.getTree().addMouseListener(new MouseListener() {
        @Override
        public void mouseDoubleClick(MouseEvent e) {
            // TODO Auto-generated method stub

        }
        @Override
        public void mouseDown(MouseEvent e) {
            // TODO Auto-generated method stub

        }
        @Override
        public void mouseUp(MouseEvent e) {
            // TODO Auto-generated method stub
            System.out.println("Mouse UP");

        }
    });
于 2013-06-22T12:46:45.063 回答