0

私はJavaで簡単なゲームを書いていて、マウスの座標を取得しようとしています. 私が欲しいのは、コンテンツの左上隅にある 0,0 ですが、ウィンドウに対する座標を取得します。

ここに画像の説明を入力

コードは次のとおりです。

public void mouseMoved(MouseEvent event)
{
    x = event.getY();
    y = event.getX();
}

これは経由で接続されていますJFrame.addWindowListener()

助言がありますか?

4

3 に答える 3

3

イベントをウィンドウ フレーム内のコンテンツ ペインにバインドするようにしてください。次に、イベントは 0,0 座標から相対的にトリガーされます。メインの外側にイベントが必要ないと仮定すると、すべての目的で別のイベントハンドラーをそこにバインドできます。

もう 1 つの方法は、タイトル バーの高さとウィンドウ フレームの幅を決定し、指定された座標からそれらを差し引くことです (ゲーム ウィンドウ内でそれらに隣接して配置されているため、適切に調整する場合)、コンテンツ フレーム内の相対的な位置を求めます。

于 2012-04-07T01:22:28.193 に答える
0
double screenW = Toolkit.getDefaultToolkit().getScreenSize().width;
double screenH = Toolkit.getDefaultToolkit().getScreenSize().height;
double posX = screenW/2 - WIDTH/2;
double posY = screenH/2 - HEIGHT/2;

x = event.getX() - posX;
y = event.getY() - posY;
于 2013-05-11T09:24:44.210 に答える
0

それはウィンドウに相対的です。ウィンドウには の端に境界線が含まれているcontentPaneため、0,0 ではなく 3, 25 が表示されます。MouseListenercontentPane直接追加するか、フレームを使用Insetsして境界線を考慮することができます。

于 2012-04-07T01:26:40.203 に答える