Java中窗口拖动的事件

dus*_*ins 5 java macos listener

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

所以这就是这样......

---------------
|             |----------
|   JFrame    |          |
|             |  JWidow  |
|             |          |
|             |          |
|             |          |
|             |-----------
---------------
Run Code Online (Sandbox Code Playgroud)

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

在没有完全理解所有内容的情况下,我希望得到并处理任何正在绘制窗口标题栏的内容(它似乎是关于rootpane的东西).我甚至不确定是否可以这样做,但它是我能想到的唯一其他解决方案来确定整个窗口被拖动的时间.

任何帮助表示赞赏!

Tom*_*ine 1

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

  • 当窗口开始移动时,您可以找出指针所在的位置,然后从那里算出指针应该在哪里。尽管如果您使用非 PL&F 装饰框架,您实际上不会获得鼠标按下事件。 (2认同)