2009-07-27 15 views

答えて

18

もMouseEventをフィルタリングするためのAWTEventListenerを使用します。

long eventMask = AWTEvent.MOUSE_MOTION_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK; 
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() 
{ 
    public void eventDispatched(AWTEvent e) 
    { 
     System.out.println(e); 
    } 
}, eventMask); 
+1

これは符号なしアプレットでは許可されていません – lexicalscope

0

マウス関連のインターフェイスは

のMouseListener のMouseMotionListener のMouseWheelListener

+1

階層内の1つのコンポーネントだけがマウスイベントを公開するため、これは機能しません。したがって、階層内のすべてのコンポーネントにマウス・リスナーを登録する必要があります。 –

2

あなたが持っているだろうクラスのすべてのマウス関連のリスナーを実装し、すべてのマウス関連イベントのハンドラとしてそのクラスを登録JFrameのglassPaneを使用するには: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html#getGlassPane()

frm.getGlassPane()でJFrameを開き、その上にaddMouseListener()を使用して、ウィンドウ内のすべてのマウスイベントを取得します。

0

MouseAdapterのサブクラスを実装することができます。このサブクラスは、Mouse*Listenerインターフェイスに定義されているすべてのメソッドの空の実装を提供する抽象クラスです。これを実行すると、子コンポーネントを作成するときに子コンポーネントにMouseListenerとして登録できます。コンポーネントが「変更中」であることを示しているので、JFrameのライフサイクル中にコンポーネントをリリースしたい場合は、リスナーの登録を解除する必要があります。

+0

MouseInputAdapter - MouseAdapterは、MouseListenerの実装(クリック、モーションまたはスクロールホイールなし)です。 – Nate

+0

ネイト、返信いただきありがとうございます。コードを見ると、MouseAdapterが3つのインターフェイスをすべて実装していることがわかります。 – akf

7

あなたは[SwingUtilities.getDeepestComponentAt()] [3]実際のコンポーネントを取得すると、[SwingUtilities.convertMouseEventを(使用後、すべての可能なマウスイベントをつかむために、それにMouseInputAdapterを追加し、あなたの全体のJFrame上GlassPaneを追加し、可能性があり)] [4]マウスイベントをガラスパネルから実際のコンポーネントに委譲します。

しかし、KeyEventDispatcherは、キーを押すたびにイベントを発生させるだけで、ユーザーがマウスを動かすと複数のイベントが生成され、KeyEventDispatcherとは異なり、それを処理するためにイベントを下部コンポーネントに再送信する必要があります。

(申し訳ありません - stackoverflowのは正しくSwingUtilitiesメソッドへのリンクを処理していない...リンクではなく、テキストよりも下に示している。)

[3]:http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/SwingUtilities.html#getDeepestComponentAt(java.awt.Component、int型、int型) [4 ]:http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/SwingUtilities.html#convertMouseEvent(java.awt.Component、java.awt.event.MouseEvent、java.awt.Componentを)

関連する問題