2012-02-21 66 views
1

我有一個JscrollPane,它包含我繪製的JPanel。我想使用的MouseWheelEvent到:在多個不同的組件中使用事件

  • 縮放(用CTRL +滾輪)面板內容
  • 和滾動滾動窗格(只車輪)

本身每個動作的工作原理,但我不會設法使這兩個工作。只要我將MouseWheelListener添加到JPanel,事件就不會到達JScrollPanels列表器。

如何將MouseWheelEvent轉發給JScrollPanes MouseWheelListener(如果尚未在JPanel中使用)?

編輯:感謝您的提示:是否還有一種方法可以使兩個聽衆都聽?因爲滾動窗格中的滾動實際上是默認實現的。那麼有沒有一種方法可以在沒有任何額外實施的情況下使用它?

感謝&問候, 馬克

回答

2

讓您的自定義監聽器分派的事件(它並不想處理本身)發送者的父母,最終,滾動面板將它們撿起來:

final MouseWheelListener wheel = new MouseWheelListener() { 

     @Override 
     public void mouseWheelMoved(MouseWheelEvent e) { 
      if (shouldHandleHere(e)) { 
       LOG.info("do-my-own-stuff"); 
      } else { 
       LOG.info("dispatch-to-parent"); 
       e.getComponent().getParent().dispatchEvent(e); 
      } 
     } 

     public boolean shouldHandleHere(MouseWheelEvent e) { 
      return (e.getModifiersEx() & MouseWheelEvent.CTRL_DOWN_MASK) != 0; 
     } 
    }; 
1

當註冊的監聽器,則指定在檢測到特定動作時執行的方法。假設我有:

  • Listener1執行方法1
  • LISTENER2執行方法2

如果listener1防止監聽LISTENER2,你就必須listener1被觸發時調用方法1和方法2。

+0

感謝您的答覆,在那裏也一種讓聽衆傾聽的方法?請參閱編輯。 – Marc 2012-02-22 07:17:34

相關問題