【问题标题】:Java (Swing) - Drag two windows at onceJava (Swing) - 一次拖动两个窗口
【发布时间】:2009-04-09 05:10:03
【问题描述】:

如何让一个窗口与另一个窗口一起移动?即,当 JFrame 被拖动时,我希望 JDialog 跟随 JFrame。如果 JFrame 移动 (+5, +20),则 JDialog 也需要移动。

我尝试过使用 ComponentListeners,但我只接收块中的拖动事件,这会导致 JDialog 窗口在拖动主 JFrame 时跳动。我试过使用 MouseListeners,但我不知道如何在 JFrame 的实际帧上检测事件。

【问题讨论】:

    标签: java swing drag


    【解决方案1】:

    AFAIK 在 AWT 中不能移动多个窗口。为了让动作同时被调用,我猜你希望 JFrame 装饰被 PL&F 渲染。使用特定于 PL&F 的 hack 自己进行移动,几乎同时移动两个窗口。您可能仍然会遇到暴露一些窗口只是为了掩盖它们而导致性能下降的问题。

    【讨论】:

    • 你能指导我学习任何特定的 PL&F 课程吗?我可以用它来快速开始这个 hack?
    【解决方案2】:

    尝试使用 ComponentListener.componentMoved 事件而不是监视 JFrame 上的拖动事件。

    【讨论】:

      【解决方案3】:

      组件监听器方法完美运行。 我做了这样的事情:

      Point p = this.getLocation();
      p.x += this.getWidth() + 10;
      this.getOwner().setLocation(p);
      

      “10”是当前窗口(一个 JDialog)与其右边的所有者之间的空间。

      【讨论】:

        猜你喜欢
        • 2011-01-14
        • 1970-01-01
        • 1970-01-01
        • 2011-01-06
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 2013-11-04
        • 1970-01-01
        相关资源
        最近更新 更多