5

我正在尝试在 Java 中实现类似 OS X 抽屉的功能,因此我将一个窗口隐藏在另一个窗口下。但是,当我拖动主窗口(JFrame)时,我需要在它移动到下面的辅助窗口(JWindow)时发送更新。

所以它会是这样的......</p>

---------------
|             |----------
|   JFrame    |          |
|             |  JWidow  |
|             |          |
|             |          |
|             |          |
|             |-----------
---------------

也就是说,OS X 中的 ComponentListener 不会为 componentMoved 发送持续更新,只有当您暂停一秒钟或松开鼠标时。这似乎与 Win/Linux 不同,所以我想知道是否有人有不同的解决方案。

在没有完全理解所有内容的情况下,我希望得到并处理绘制窗口标题栏的任何内容(似乎是关于根窗格的内容)。我什至不确定这是否可行,但这是我能想到的确定何时拖动整个窗口的唯一其他解决方案。

任何帮助表示赞赏!

4

2 回答 2

1

假设您有受信任的代码,您可以使用它MouseInfo.getPointerInfo()来获取指针的位置。可以轮询此信息,以便您可以确定窗口应该在哪里。无论如何,您可能只能轮询窗口的位置。

于 2009-04-16T17:09:28.840 回答
1

您能否使用 mouseMotionListener 来查看鼠标是否在移动,如果是,则使用 getLocation() 更新第二个窗口的位置。您还可以检查当前位置是否等于先前位置,以防止浪费资源。我不确定 getLocation() 是否能正常工作,它确实取决于操作系统如何处理它。

于 2009-04-27T05:14:42.543 回答