我的意思是从“鼠标的角度”来看。Z 顺序最高的东西。
卡在 JPopupMenu 上,甚至不能成为“父子”关系的一部分。
谢谢。
在测试中,我需要验证 JPopupMenu 组件是否出现在屏幕上。我没有该 JPopuMenu 的任何特定附加属性来通过该谓词查找所有 JPopupMenus 并检查其中是否有任何可见。我想获取所有可见的顶级组件并验证其中之一是否属于 JPopupMenu 类。
我也不清楚这个问题,但是如果你想要某个组件的最高父级,那么有 SwingUtilities.getWindowAncestor(Component);
如果您想要所有可见窗口的列表,请参阅早期的 Stackoverflow 问题swing getvisibleframes
编辑添加
然后查看 @mKorbel 对 getComponentZOrder 的建议。但 JPopupMenus 的出身可能很奇怪。
重新阅读您的问题,您可能想要获取所有顶级 Windows 并调用 getComponentPopupMenu() 来检查是否匹配。
或者,如果您有 x,y 位置,最好的解决方案是调用 findComponentAt(x,y)。来自javadoc:
"定位包含指定位置的可见子组件。如果组件有重叠,则返回最顶层的子组件。如果包含的子组件是 Container,则此方法将继续搜索最深的嵌套子组件组件。在搜索过程中,不可见的组件将被忽略。”