TITLE:JFrameの移動を同期
#navi(../)
*JFrameの移動を同期 [#qa088c78]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-07-09~
更新日:&lastmod;

#contents

**概要 [#r16f61f8]
JFrameを2つ並べて作成し、その位置関係を保ったまま移動できるようにします。

#screenshot

**サンプルコード [#f580c5f3]
#code{{
 private void positionFrames(ComponentEvent e) {
   if(e.getSource().equals(frame1)) {
     int x = frame1.getBounds().x;
     int y = frame1.getBounds().y + frame1.getBounds().height;
     frame2.removeComponentListener(this);
     frame2.setLocation(x, y);
     frame2.addComponentListener(this);
   }else{
     int x = frame2.getBounds().x;
     int y = frame2.getBounds().y - frame1.getBounds().height;
     frame1.removeComponentListener(this);
     frame1.setLocation(x, y);
     frame1.addComponentListener(this);
   }
 }
}}
-&jnlp;
-&jar;
-&zip;

**解説 [#ceedca5e]
上記のサンプルでは、JFrameを上下に並べて、それぞれにComponentListenerインタフェースを実装したリスナーを追加しています。片方のフレームが移動された時、残りのフレームの位置を指定する前に、一旦このリスナーを削除してやることで、処理がループしないようになっています。

**参考リンク [#q31d1b00]
-[[how to dock two jdialogs?>http://forum.java.sun.com/thread.jspa?threadID=545918]]
-[[how to catch drag event in the title bar of a jframe>http://forum.java.sun.com/thread.jspa?threadID=429463]]

**コメント [#ic655f15]
#comment