Java中窗口拖动的事件

时间:2009-04-16 16:58:06

标签: java macos listener

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

所以它会是这样的......

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

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

如果没有完全理解所有内容,我希望得到并处理任何正在绘制窗口标题栏的内容(有关根窗格的内容)。我甚至不确定是否可以这样做,但它是我能想到的唯一其他解决方案,以确定整个窗口被拖动的时间。

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

假设您拥有受信任的代码,您可以使用MouseInfo.getPointerInfo()来获取指针的位置。可以轮询此信息,以便您可以确定窗口的位置。您可能只能轮询窗口的位置。

答案 1 :(得分:1)

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