私は、変化する子コンポーネントの数が多いJFrameを持っています。 (多くのレイヤー)すべてのマウスイベントにリスナーを追加する方法はありますか? KeyEventDispatcherのようなもの?JFrame/Swingですべてのマウスイベントをキャプチャする方法はありますか?
答えて
も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);
これは符号なしアプレットでは許可されていません – lexicalscope
マウス関連のインターフェイスは
のMouseListener のMouseMotionListener のMouseWheelListener
階層内の1つのコンポーネントだけがマウスイベントを公開するため、これは機能しません。したがって、階層内のすべてのコンポーネントにマウス・リスナーを登録する必要があります。 –
あなたが持っているだろうクラスのすべてのマウス関連のリスナーを実装し、すべてのマウス関連イベントのハンドラとしてそのクラスを登録JFrameのglassPaneを使用するには: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html#getGlassPane()
frm.getGlassPane()でJFrameを開き、その上にaddMouseListener()を使用して、ウィンドウ内のすべてのマウスイベントを取得します。
MouseAdapter
のサブクラスを実装することができます。このサブクラスは、Mouse*Listener
インターフェイスに定義されているすべてのメソッドの空の実装を提供する抽象クラスです。これを実行すると、子コンポーネントを作成するときに子コンポーネントにMouseListener
として登録できます。コンポーネントが「変更中」であることを示しているので、JFrameのライフサイクル中にコンポーネントをリリースしたい場合は、リスナーの登録を解除する必要があります。
あなたは[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を)
- 1. コンテナ内のすべてのマウスイベントのキャプチャ
- 2. (WPF)ウィンドウの外で発生するマウスイベントをキャプチャする方法はありますか?
- 3. マウスイベントを無視する方法はありますか?
- 4. マウスイベントのキャプチャからDOM要素を無効にする方法はありますか?
- 5. Matlabのバックグラウンドプロセスとしてマウスイベントをチェックする方法はありますか?
- 6. 空のキャプチャを破棄する方法はありますか?
- 7. クリップボードペーストイベントw jQueryをキャプチャする方法はありますか?
- 8. スクリプト内の 'killall'コマンドからすべての出力をキャプチャする方法はありますか?
- 9. スクロールバーのマウスイベントはありますか
- 10. ブラウザからiPhoneで画像をキャプチャする方法はありますか?
- 11. UITableViewCellのスイッチからイベントをキャプチャする方法はありますか?
- 12. jQueryでaltKey + i、u、e、nをキャプチャする方法はありますか?
- 13. tcpdump経由でFTPデータパケットをキャプチャする方法はありますか?
- 14. iBookウィジェットで「終了」イベントをキャプチャする方法はありますか?
- 15. マウスイベントではなく、キーイベントで開いているすべてのNSPopoversをプログラムで閉じる方法はありますか?
- 16. コントロール内のすべてのアイテムをキャプチャする方法は?
- 17. Entryフィールドのすべての変更をキャプチャする方法は?
- 18. GitHubでは、すべての(最近)コミットをすべてのブランチで見る方法はありますか?
- 19. VMwareインスタンスからデバッグ出力をキャプチャする方法はありますか?
- 20. rails - POSTのパラメータ全体をキャプチャする方法はありますか?
- 21. バインディングフォームですべてのシンボルを見つける方法はありますか?
- 22. Rubyで正規表現キャプチャをブロックに渡す方法はありますか?
- 23. wxpythonはマウスイベントをすべてのパネルにバインドしますか?
- 24. すべてのページでspryメニューバーのすべてのリンクを更新する方法はありますか?
- 25. Eris Blockchainのすべてのブロックですべてのイベントを表示する方法はありますか?
- 26. WPFのマウスイベントに対してコントロールを透過的にする方法はありますか?
- 27. Javaでアプリケーションサーバー名を調べる方法はありますか
- 28. JMeterテスト中にAJAXトラフィックをキャプチャする良い方法はありますか?
- 29. IBM Streams(Streamsコンソールではない)のオペレータを介してタプル/秒をキャプチャする方法はありますか?
- 30. javaのマウスイベントのさまざまなオプションを処理する標準的な方法はありますか?
なぜ、このコミュニティのwikiはありますか? – akf