如何获取JComponent的顶级容器?

5Yr*_*DBA 7 java swing

有没有办法获得组件的顶级容器?例如,我有一个JToolbar,我想在一个monent上知道该JToolbar的顶级容器是我的JFrame,或者是它自己的窗口,一个JDialog.

cam*_*ckr 13

SwingUtilities.windowForComponent(...);
Run Code Online (Sandbox Code Playgroud)


Ash*_*Ash 6

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

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

if ( c instanceof JFrame )
{
  //...
}
Run Code Online (Sandbox Code Playgroud)