7

パネルの左上のように、パネル内でマウスの位置を取得しようとしています= x /y0,0。

私が今持っているのは画面全体の位置を示しているので、パネル(フレーム内)が画面上のどこにあるかによって、座標が異なります。これを説明するためにx/y座標に追加できると思いますが、これは厄介な解決策のようです。誰か助けてもらえますか?

これが私が使用しているmouseListenerで、パネルに追加されています。

private class MouseListener extends MouseAdapter 
{
    public void mouseClicked(MouseEvent e) 
    {
        // Finds the location of the mouse
        PointerInfo a = MouseInfo.getPointerInfo();
        Point b = a.getLocation();

        // Gets the x -> and y co-ordinates
        int x = (int) b.getX();
        int y = (int) b.getY();
        System.out.println("Mouse x: " + x);
        System.out.println("Mouse y: " + y);

        // Determines which tile the click occured on
        int xTile = x/tileSize;
        int yTile = y/tileSize;

        System.out.println("X Tile: " + xTile);
        System.out.println("Y Tile: " + yTile);

    }
}
4

2 に答える 2

8

MouseEvent.getPoint()を参照してください。

ソースコンポーネントを基準にしたイベントのx、y位置を返します。

于 2012-10-12T20:03:57.623 に答える
3

とを使用MouseEvent.getX()MouseEvent.getY()て、それぞれXとYの相対座標を取得できます。

int relativeX = e.getX();
int relativeY = e.getY();
...
于 2012-10-12T20:05:33.220 に答える