Java 如何知道组件是否相对于屏幕移动(而不是相对于其父级)?

Java 如何知道组件是否相对于屏幕移动(而不是相对于其父级)?,java,swing,location,screen,componentlistener,Java,Swing,Location,Screen,Componentlistener,我在JFrame中有一个组件,我需要知道该组件何时相对于屏幕空间移动 它发生在移动框架或更改布局时 我的问题是: 当我将ComponentListener附加到我的组件时 帧移动时,不会调用回调方法componentMoved() 因为组件相对于其位置仍然具有相同的位置 父级(此处为JFrame) 我想知道什么时候移动组件而不添加 ComponentListener到JFrame本身 因此,我正在寻找一种方法来了解组件何时相对于屏幕移动 注:这些规格是强加给我的。。。我别无选择,但在这里解释

我在
JFrame
中有一个组件,我需要知道该组件何时相对于屏幕空间移动

它发生在移动框架或更改布局时

我的问题是:

  • 当我将
    ComponentListener
    附加到我的组件时 帧移动时,不会调用回调方法
    componentMoved()
    因为组件相对于其位置仍然具有相同的位置 父级(此处为
    JFrame
  • 我想知道什么时候移动组件而不添加
    ComponentListener
    JFrame
    本身
因此,我正在寻找一种方法来了解组件何时相对于屏幕移动


注:这些规格是强加给我的。。。我别无选择,但在这里解释这一点太长也不重要。

使用
SwingUtilities
。仅通过(0,0)点并查看结果坐标

public static void convertPointToScreen(Point p,Component c)

您应该将侦听器连接到包含帧的组件

好的,我知道如何转换位置,但我需要动态地得到警告,我的问题是我不能将侦听器连接到JFrame。为什么您不能将侦听器连接到JFrame?正如我所说的,描述它的时间很长。。。我接管了一家公司的一些代码(糟糕的代码…),我别无选择。如果你有这个组件,你可以得到它的顶层祖先(窗口、对话框或框架),并将你的侦听器添加到那里。“在这里解释它会很长,而且不相关。”…下一步!