Java 如何获取JComponent的顶级容器?
有没有办法获取组件的顶级容器?例如,我有一个JToolbar,我想知道该JToolbar的顶级容器是我的JFrame还是它自己的窗口,一个JDialog。如果组件已添加到层次结构中,您可以通过递归调用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 ) { //... } 今天我遇到了同样的问题
getParent
来查找顶级容器:
Container c = toolbar;
while ( c.getParent() != null )
{
c = c.getParent();
}
if ( c instanceof JFrame )
{
//...
}
今天我遇到了同样的问题,完全采用了Recrive方法,效果很好。实际上,如果组件的容器是JPanel,那么批准的答案将不起作用。所以我相信第二个答案更灵活,因为它让你选择要寻找的东西。。。。
SwingUtilities.windowForComponent(...);