如何让一个窗口与另一个窗口一起移动?即,当拖动 JFrame 时,我希望 JDialog 跟随 JFrame。如果 JFrame 移动 (+5, +20),则 JDialog 也需要移动。
我试过使用 ComponentListeners,但我只接收到块中的拖动事件,这会导致 JDialog 窗口在拖动主 JFrame 时跳动。我试过使用 MouseListeners,但我不知道如何在 JFrame 的实际帧上检测事件。
尝试使用 ComponentListener.componentMoved 事件而不是监视 JFrame 上的拖动事件。
AFAIK 在 AWT 中不能移动多个窗口。为了让动作同时被调用,我猜你希望JFrame
装饰是 PL&F 渲染的。使用特定于 PL&F 的 hack 自己进行移动,几乎同时移动两个窗口。您可能仍然会遇到暴露一些窗口只是为了掩盖它们而导致性能下降的问题。
组件侦听器方法完美运行。我做了这样的事情:
Point p = this.getLocation();
p.x += this.getWidth() + 10;
this.getOwner().setLocation(p);
其中“10”是当前窗口(一个 JDialog)与其右侧的所有者之间的空间。