TITLE:JFrameの移動を同期

Posted by at 2005-07-04

JFrameの移動を同期

`JFrame2`つ並べて作成し、その位置関係を保ったまま移動できるようにします。

  • &jnlp;
  • &jar;
  • &zip;
DockingFrames.png

サンプルコード

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);
  }
}
View in GitHub: Java, Kotlin

解説

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

参考リンク

コメント