java如何获得顶级组件

时间:2011-12-08 16:32:50

标签: java swing awt

我的意思是'鼠标观点'。 Z顺序最高的东西 坚持JPopupMenu,甚至不能成为'亲子'关系的一部分。

感谢。


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

3 个答案:

答案 0 :(得分:4)

我也不清楚这个问题,但是如果你想要某个组件的最高父组件,那就有SwingUtilities.getWindowAncestor(Component);

如果您需要所有可见窗口的列表,请参阅早期的Stackoverflow问题,swing get visible frames

编辑添加

然后查看@mKorbel对getComponentZOrder的建议。但JPopupMenus在他们的父母身上可能很奇怪。

重读您的问题,您可能希望获得所有顶级Windows并调用getComponentPopupMenu()来检查匹配项。

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

不确定JPopupMenu是否被视为JFrame的子级。

但如果是,那么你应该能够使用Darryl的Swing Utils课来找到它们。