4

我正在尝试获取组件的坐标,例如标签。我尝试了 getBounds 和 getLocation,但是如果标签位于 2 个或更多面板上,它们不会给出准确的坐标。除了 getLocationOnScreen 之外,还有没有办法能够获得准确的组件坐标,即使它们位于多个面板上?

4

3 回答 3

6

If you want it relative to a JFrame, then you'll have to do something like this:

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);
}

Or you can just use the built-in solution SwingUtilities.convertPoint(comp, 0, 0, root).

于 2012-04-09T09:09:16.793 回答
3

作为 的替代方案getLocationOnScreen(),您可以使用getXOnScreen()and getYOnScreen()from a MouseEventZoom是一个例子。

于 2012-04-09T09:06:59.230 回答
3

尝试组件。getLocationOnScreen()

正如 Javadoc 所说,

以点的形式获取此组件的位置,该点指定组件在屏幕坐标空间中的左上角。

于 2012-04-09T08:59:22.607 回答