Java中用于窗口拖动的事件

Java中用于窗口拖动的事件,java,macos,listener,Java,Macos,Listener,我正试图在Java中实现一个OSX抽屉式的特性,所以我将让一个窗口隐藏在另一个窗口之下。但是,当我拖动主窗口(JFrame)时,我需要在它移动到下面的辅助窗口(JWindow)时发送更新 所以应该是这样的 --------------- | |---------- | JFrame | | | | JWidow | | | | | |

我正试图在Java中实现一个OSX抽屉式的特性,所以我将让一个窗口隐藏在另一个窗口之下。但是,当我拖动主窗口(JFrame)时,我需要在它移动到下面的辅助窗口(JWindow)时发送更新

所以应该是这样的

---------------
|             |----------
|   JFrame    |          |
|             |  JWidow  |
|             |          |
|             |          |
|             |          |
|             |-----------
---------------
也就是说,OSX中的ComponentListener不会为componentMoved发送持续更新,只有在您暂停一秒钟或提起鼠标时才会发送。这似乎不同于Win/Linux,所以我想知道是否有人有不同的解决方案

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


感谢您的帮助

假设您有受信任的代码,可以使用
MouseInfo.getPointerInfo()
获取指针的位置。可以对这些信息进行轮询,以便确定窗口的位置。您可能只是能够轮询窗口的位置。

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

我应该指定,我使用JFrame作为主框架,并计划使用JWindow作为次框架。我不确定这会有什么帮助。光标的位置似乎对知道主框架何时移动没有帮助,是吗?我希望能够知道标题栏上何时触发mouseDown,然后为此后的每个mouseDragged更新jwindow位置。当窗口开始移动时,您可以找到指针所在的位置,然后确定它应该在哪里。虽然如果您使用的是非PL&F装饰框架,您实际上不会获得鼠标按下事件。