JFrameの移動を同期
Total: 10573
, Today: 2
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
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
を実装したリスナーを追加- 片方のフレームが移動された時、残りのフレームの位置を指定する前に一旦このリスナーを削除することで処理ループの発生を防止
参考リンク
- 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)