我可以继续使用每个getParent()迭代他们的父母,直到我找到共享父或null,但这看起来是一个糟糕的解决方案,有更好的方法吗?
Basiclly我的用例是在FocusListener中,在focusLost()上我想知道我是否会失去对我框架之外的东西的关注......
答案 0 :(得分:3)
JComponent有方法
/**
* Returns the top-level ancestor of this component (either the
* containing <code>Window</code> or <code>Applet</code>),
* or <code>null</code> if this component has not
* been added to any container.
*
* @return the top-level <code>Container</code> that this component is in,
* or <code>null</code> if not in any container
*/
public Container getTopLevelAncestor()
因此您可以比较两个组件的容器
答案 1 :(得分:2)
您可以比较以下结果:
SwingUtilities.windowForComponent(comp1).equals(SwingUtilities.windowForComponent(comp2))
或强>
SwingUtilities.getWindowAncestor(comp1).equals(SwingUtilities.getWindowAncestor(comp2))
或强>
SwingUtilities.getRoot(comp1).equals(SwingUtilities.getRoot(comp2))