Swing/DockingFrames のバックアップの現在との差分(No.15)
- category: swing folder: DockingFrames title: JFrameの移動を同期 tags: [JFrame, ComponentListener] author: aterai pubdate: 2005-07-04T07:42:08+09:00 description: JFrameを2つ並べて作成し、その位置関係を保ったまま移動できるようにします。 image:
概要
JFrame
を2
つ並べて作成し、その位置関係を保ったまま移動できるようにします。
Screenshot
Advertisement
サンプルコード
private void positionFrames(ComponentEvent e) {
if (e.getComponent().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
インタフェースを実装したリスナーを追加しています。片方のフレームが移動された時、残りのフレームの位置を指定する前に、一旦このリスナーを削除してやることで、処理がループしないようになっています。
-
JFrame
を上下に並べてそれぞれにComponentListener
を実装したリスナーを追加 - 片方のフレームが移動された時、残りのフレームの位置を指定する前に一旦このリスナーを削除することで処理ループの発生を防止
参考リンク
- Swing (Archive) - how to dock two jdialogs?
- Swing (Archive) - how to catch drag event in the title bar of a jframe
- ComponentListener (Java Platform SE 8)