确定Java Swing中的重叠组件



我在JXTreeTable上加载了一个JPanel。我想确定JPanel是否与JXTreeTable的特定单元格重叠。我试着检索X和Y分量并进行比较。然而,当我检查JPanel的最小X和Y坐标时,它们总是0.0。我想不通。除了比较坐标值之外,还有别的吗?

您应该能够使用Rectangle来帮助确定组件是否重叠。

Rectangle panelBounds = panel.getBounds();
Rectangle cellBounds = getRowBounds(row); // getPathBounds(path);
if (panelBounds.intersects(cellBounds)) {
    // We have a collision
}

现在,更大的问题是,X/Y返回值总是0。这意味着getBounds方法返回的Rectangle也将返回0的x/y。

您将需要分享一些代码来向我们展示如何布置此组件。

只有在以下情况下才能确定JComponents坐标:

  • 已在屏幕上可见

  • 调用后方法pack()

为了获得更好的帮助,请尽快发布SSCCE

最新更新