我正在尝试获取组件的坐标,例如标签。我尝试了 getBounds 和 getLocation,但是如果标签在 2 个或更多面板上,它们不会给出准确的坐标。除了 getLocationOnScreen 之外,有没有办法能够获取准确的组件坐标,即使它们位于多个面板上?
最佳答案
如果你想要它相对于 JFrame,那么你必须做这样的事情:
public static Point getPositionRelativeTo(Component root, Component comp) {
if (comp.equals(root)) { return new Point(0,0); }
Point pos = comp.getLocation();
Point parentOff = getPositionRelativeTo(root, comp.getParent());
return new Point(pos.x + parentOff.x, pos.y + parentOff.y);
}
或者您可以只使用内置解决方案 SwingUtilities.convertPoint(comp, 0, 0, root)
。
关于java - 如何获得 Swing 组件的坐标,而不考虑其父组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10070848/