我正在尝试在Java中实现类似OS X抽屉的功能,因此我将在另一个窗口下隐藏一个窗口。但是当我拖动主窗口(JFrame)时,我需要在移动到下面的辅助窗口(JWindow)时发送更新。
所以它会是这样的......
---------------
| |----------
| JFrame | |
| | JWidow |
| | |
| | |
| | |
| |-----------
---------------
也就是说,OS X中的ComponentListener不会为componentMoved发送持续更新,只有当您暂停一秒或取消鼠标时才会发送。这似乎与Win / Linux不同,所以我想知道是否有人有不同的解决方案。
如果没有完全理解所有内容,我希望得到并处理任何正在绘制窗口标题栏的内容(有关根窗格的内容)。我甚至不确定是否可以这样做,但它是我能想到的唯一其他解决方案,以确定整个窗口被拖动的时间。
感谢任何帮助!
答案 0 :(得分:1)
假设您拥有受信任的代码,您可以使用MouseInfo.getPointerInfo()
来获取指针的位置。可以轮询此信息,以便您可以确定窗口的位置。您可能只能轮询窗口的位置。
答案 1 :(得分:1)
您是否可以使用mouseMotionListener查看鼠标是否在移动,如果是,则使用getLocation()更新第二个窗口的位置。您还可以检查当前位置是否等于先前位置,以防止浪费资源。我不确定getLocation()是否能正常工作,它确实取决于操作系统如何处理它。