java如何获取顶级组件

java如何获取顶级组件,java,swing,awt,Java,Swing,Awt,我的意思是“鼠标视角”。Z阶最高的东西。 停留在JPopupMenu上,甚至不能成为“亲子”关系的一部分 谢谢 在测试中,我需要验证屏幕上是否出现了JPopupMenu组件。我没有该JPopuMenu的任何特定附加属性来通过该谓词查找所有JPopupMenus并检查它们是否可见。我想获取所有可见的顶级组件,并验证其中一个属于JPopupMenu类。我不清楚您的问题,但我认为这会很有用。我也不清楚这个问题,但如果您想要某个组件的最高父级,那么就有SwingUtilities.GetWindowA

我的意思是“鼠标视角”。Z阶最高的东西。
停留在JPopupMenu上,甚至不能成为“亲子”关系的一部分

谢谢



在测试中,我需要验证屏幕上是否出现了JPopupMenu组件。我没有该JPopuMenu的任何特定附加属性来通过该谓词查找所有JPopupMenus并检查它们是否可见。我想获取所有可见的顶级组件,并验证其中一个属于JPopupMenu类。

我不清楚您的问题,但我认为这会很有用。

我也不清楚这个问题,但如果您想要某个组件的最高父级,那么就有
SwingUtilities.GetWindowAnsentials(组件)

如果需要所有可见窗口的列表,请参阅前面的Stackoverflow问题

编辑添加

然后研究getComponentZOrder的@mKorbel建议。但是JPopupMenus的父母身份可能会很奇怪

重新阅读您的问题,您可能需要获取所有顶级窗口,并调用getComponentPopupMenu()检查匹配项

或者,如果您有一个x,y位置,最好的解决方案是调用findComponentAt(x,y)。从javadocs:


“查找包含指定位置的可见子组件。如果组件中存在重叠,则返回最顶层的子组件。如果包含的子组件是容器,则此方法将继续搜索嵌套最深的子组件。搜索过程中会忽略不可见的组件。“

不确定JPopupMenu是否被视为JFrame的子菜单


但是如果是这样的话,那么您应该能够使用Darryl的类来查找它们。

请在这里发布表单中的代码,并提供您的要求注意:JPopupMenus不一定显示在顶级组件中-如果它们是轻量级的,则会添加到所有者的顶级父rootPane的layeredPane中。我需要与SwingUtilities相反的。GetWindowAn祖(组件);在“可见性视角”中,我需要z阶最高+1的孩子,@Mykhaylo Adamovych再次发布SSCCEE,因为一切都应该或应该是正确的,为什么我们需要你为你提供好的、正确的建议。。。。。。