2009-04-09 8 views
0

どのようにして1つのウィンドウを別のウィンドウに移動できますか?つまり、JFrameがドラッグされているときに、JFrameをJDialogに追従させたいと考えています。 JFrameが(+ 5、+ 20)移動すると、JDialogは同じ動きをする必要があります。Java(Swing) - 2つのウィンドウを一度にドラッグ

私はComponentListenersを使用しようとしましたが、チャンク内のドラッグイベントのみを受け取るため、メインのJFrameをドラッグしている間にJDialogウィンドウが不安定になります。 MouseListenersを試してみましたが、JFrameの実際のフレームでイベントを検出する方法を理解できません。

答えて

1

ここでは、AWTの複数のウィンドウを移動することはできません。同様の時間に呼び出されるようにするには、JFrameデコレーションをPL & Fにすることをお勧めします。 PL & F固有のハックを入れて、両方のウィンドウをほぼ同時に動かしてください。あなたはまだいくつかのパフォーマンス低下を引き起こすそれらをカバーするためにだけウィンドウのビットを公開することに問題があるかもしれません。

+0

このハッキングを開始するために使用できるPL&Fの特定のクラスに私を案内できますか? –

1

JFrameのドラッグイベントを監視する代わりに、ComponentListener.componentMovedイベントを使用してみてください。

0

コンポーネントリスナメソッドは完全に機能します。 「10」は、その右にある現在のウィンドウ(JDialogの)とその所有者との間のスペースである

Point p = this.getLocation(); 
p.x += this.getWidth() + 10; 
this.getOwner().setLocation(p); 

: は、私はこのような何かをしました。

関連する問題