1

У меня есть treeViewer, в котором я хочу выполнить некоторый код (метод doSomething()) только при нажатии кнопки мыши, а не на мышь вниз. Следующий фрагмент кода выполняет его, даже когда нажатие мыши запускается, поскольку функция выбора уже активирована. Что я должен сделать, чтобы получить точное поведение?В eclipse TreeViewer, как вызвать событие только при мышке вверх, так же хорошо, как и на клавиатуре клавиши со стрелкой

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() 
     } 
    }); 
+0

Что может создать событие MouseUp, которое не изменит выбор? –

ответ

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"); 

     } 
    });