确定Java Swing中重叠的组件

3

我在JXTreeTable上面加载了一个JPanel。我想确定JPanel是否覆盖了JXTreeTable的特定单元格。我尝试检索X和Y组件并进行比较。然而,当我检查JPanel的最小X和Y坐标时,它们总是为0.0。我无法理解这一点。除了比较坐标值之外,还有其他方法吗?


请提供一个SSCCE来演示问题(我不太明白您所说的“重叠”是指JLayer/edPane还是OverlayLayout或其他什么?) - kleopatra
2个回答

3

您可以使用Rectangle来确定组件是否重叠。

例如:

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

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

你需要分享一些代码来展示你如何布局这个组件。


1

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

  • 已经在屏幕上可见

  • 调用了pack()方法之后

为了更快地获得帮助,请发布SSCCE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接