2009-04-16 14 views
5

JavaでOS Xのドロワのような機能を実装しようとしていますので、別のウィンドウの下に隠すウィンドウを1つ作成します。しかし、プライマリウィンドウ(JFrame)をドラッグすると、下のセカンダリウィンドウ(JWindow)に移動するときに更新を送信する必要があります。Javaのウィンドウドラッグのイベント

だから、OS XでのComponentListenerは、あなたが秒間一時停止したり、マウスを持ち上げたときにのみ、componentMovedのための一定の更新を送信しない、と述べた。このような何か...

--------------- 
|    |---------- 
| JFrame |   | 
|    | JWidow | 
|    |   | 
|    |   | 
|    |   | 
|    |----------- 
--------------- 

だろう。これはWin/Linuxとは異なると思われるので、誰かが別の解決方法を持っているのだろうかと思っていました。

完全にすべてを理解することなく、私が取得し、ウィンドウのタイトルバー(それはそうのrootPaneについて何かを)描画されているものに対処するために期待していました。私はそれが可能であるかどうかも分かりませんが、ウィンドウ全体がいつドラッグされているかを判断するために考えられる唯一の解決策です。

ご協力いただきましてありがとうございます。

+0

私はJFrameをプライマリとして使用しており、セカンダリ用にJWindowを使用する予定です。 – dustins

答えて

1

あなたは、コードを信頼していると仮定すると、あなたはポインタの位置を取得するためにMouseInfo.getPointerInfo()を使用することができます。この情報はポーリングすることができますので、ウィンドウがどこにあるかを調べることができます。とにかくウィンドウがどこにあるかをポーリングすることができます。

+0

これがどのように役立つか分かりません。 Fheのカーソルの位置は、メインのJFrameが移動されているときを知るのに役立たないようですか? mouseDownがタイトルバーでいつ呼び出されたのかを知り、jwindow posを更新することができることを期待していました。それ以降は各マウスのために。 – dustins

+2

ウィンドウの移動が開始されたときのポインタの位置を確認し、そこからのポインタの位置を確認することができます。非PL&Fデコレーションされたフレームを使用している場合は、実際にはマウスダウンイベントが発生しません。 –

1

あなたは、マウスが動いているかどうかを確認するためのMouseMotionListenerを使用し、それがあれば、のgetLocation()を使用して、第2のウィンドウの位置を更新することができます。また、現在の位置が以前の位置と同じであることを確認して、リソースの無駄を防ぐことができます。 getLocation()が正しく動作するかどうかは分かりませんが、実際にはオペレーティングシステムがどのように処理するかによって異なります。

関連する問題