2012-02-21 5 views
1

私は描画するJPanelを保持するJscrollPaneを持っています。複数の異なるコンポーネントでイベントを使用する

  • 自身で各アクションが動作する(CTRL +ホイール付き)パネルの内容
  • をズームすると、(単にホイール付き)スクロールペインをスクロールする

:私はしMouseWheelEventがを使用したいですしかし、私は両方の仕事をすることはできません。 JPanelにMouseWheelListenerを追加すると、イベントはJScrollPanelsのリスナーに届きません。

JPanelで使用されていない場合は、MouseWheelEventをJScrollPanes MouseWheelListenerに転送するにはどうすればよいですか?

編集:ヒントありがとうございます:両方のリスナーを聞く方法もありますか?スクロールペイン内のスクロールは実際にはデフォルトで実装されているためです。それで、追加実装をせずにそれを使用する方法はありますか?あなたは、リスナーを登録すると&よろしく、 マルク・

答えて

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実行method1に
  • Listener2実行法2

LISTENER1は聞いてからlistener2を防ぐ場合は、あなただけのLISTENER1がトリガされたとき法1と方法2を呼び出す必要があります。

+0

おかげで、もあります両方のリスナーを聞く方法?編集を参照してください。 – Marc

関連する問題