3

我在 JXTreeTable 上加载了一个 JPanel。我想确定 JPanel 是否与 JXTreeTable 的特定单元格重叠。我尝试检索 X 和 Y 组件并比较它们。但是,当我检查 JPanel 的最小 X 和 Y 坐标时,它们始终为 0.0。我无法弄清楚。除了比较坐标值之外,还有其他方法吗?

4

2 回答 2

3

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

IE

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

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

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

于 2012-08-23T21:00:00.743 回答
1

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

  • 已经在屏幕上可见

  • 调用方法后pack()

尽快发布SSCCE以获得更好的帮助

于 2012-08-23T21:54:07.343 回答