如何确定2个组件是否在同一帧上? (摇摆)

时间:2014-08-18 13:04:06

标签: java swing jframe jcomponent

我可以继续使用每个getParent()迭代他们的父母,直到我找到共享父或null,但这看起来是一个糟糕的解决方案,有更好的方法吗?

Basiclly我的用例是在FocusListener中,在focusLost()上我想知道我是否会失去对我框架之外的东西的关注......

2 个答案:

答案 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))