Java 如何获取JComponent的顶级容器?

Java 如何获取JComponent的顶级容器?,java,swing,Java,Swing,有没有办法获取组件的顶级容器?例如,我有一个JToolbar,我想知道该JToolbar的顶级容器是我的JFrame还是它自己的窗口,一个JDialog。如果组件已添加到层次结构中,您可以通过递归调用getParent来查找顶级容器: Container c = toolbar; while ( c.getParent() != null ) { c = c.getParent(); } if ( c instanceof JFrame ) { //... } 今天我遇到了同样的问题

有没有办法获取组件的顶级容器?例如,我有一个JToolbar,我想知道该JToolbar的顶级容器是我的JFrame还是它自己的窗口,一个JDialog。

如果组件已添加到层次结构中,您可以通过递归调用
getParent
来查找顶级容器:

Container c = toolbar;
while ( c.getParent() != null )
{
  c = c.getParent();
}

if ( c instanceof JFrame )
{
  //...
}

今天我遇到了同样的问题,完全采用了Recrive方法,效果很好。实际上,如果组件的容器是JPanel,那么批准的答案将不起作用。所以我相信第二个答案更灵活,因为它让你选择要寻找的东西。。。。
SwingUtilities.windowForComponent(...);