4

ラベルなどのコンポーネントの座標を取得しようとしています。getBoundsとgetLocationを試しましたが、ラベルが2つ以上のパネルにある場合、正確な座標が得られません。getLocationOnScreenの他に、コンポーネントが複数のパネルにある場合でも、正確なコンポーネントの座標を取得できる方法はありますか?

4

3 に答える 3

6

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)

于 2012-04-09T09:09:16.793 に答える
3

コンポーネントを試してください。getLocationOnScreen()

Javadocが言うように、

画面の座標空間でコンポーネントの左上隅を指定するポイントの形式で、このコンポーネントの位置を取得します。

于 2012-04-09T08:59:22.607 に答える
3

の代わりに、をgetLocationOnScreen()使用できる場合がありgetXOnScreen()ます。例です。getYOnScreen()MouseEventZoom

于 2012-04-09T09:06:59.230 に答える