2011-12-08 46 views
2

我的意思是在'鼠标的角度'。 Z值最高的东西。
卡住了JPopupMenu,甚至不能成为“亲子关系”的一部分。java如何获得顶级组件

谢谢。


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

+1

请在这里发布http://sscce.org/表单中的代码,说明您的requirent(s) – mKorbel

+0

要注意:JPopupMenus不一定显示在顶层组件中 - 如果它们是轻量级的,它们会添加到layeredPane所有者的顶级父级rootpane – kleopatra

回答

2

我也对这个问题不太清楚,但如果你想要一些组件的最高父,有SwingUtilities.getWindowAncestor(Component);

如果你希望所有可见窗口的列表,请参阅先前的问题#1,swing get visible frames

编辑ADDED

然后看看getComponentZOrder的@mKorbel建议。但是JPopupMenus对他们的亲子来说可能很奇怪。

重新读取您的问题,您可能想要获取所有顶级Windows并调用getComponentPopupMenu()来检查匹配项。或者,如果你有一个x,y位置,最好的解决方案是调用findComponentAt(x,y)。从javadocs:

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

+0

我需要与SwingUtilities.getWindowAncestor(Component)相反;在'知名度的角度'。我需要最高Z级的孩子 –

+0

+1,@Mykhaylo Adamovych再次发布SSCCEE,因为所有事情都应该是正确的或正确的方式,为什么我们需要问你为你提供正确的建议...... ... – mKorbel

1

不确定是否将JPopupMenu视为JFrame的子项。

但是,如果是这样,那么你应该可以使用Darryl的Swing Utils类来找到它们。

相关问题