私はJavaで簡単なゲームを書いていて、マウスの座標を取得しようとしています. 私が欲しいのは、コンテンツの左上隅にある 0,0 ですが、ウィンドウに対する座標を取得します。
コードは次のとおりです。
public void mouseMoved(MouseEvent event)
{
x = event.getY();
y = event.getX();
}
これは経由で接続されていますJFrame.addWindowListener()
助言がありますか?
イベントをウィンドウ フレーム内のコンテンツ ペインにバインドするようにしてください。次に、イベントは 0,0 座標から相対的にトリガーされます。メインの外側にイベントが必要ないと仮定すると、すべての目的で別のイベントハンドラーをそこにバインドできます。
もう 1 つの方法は、タイトル バーの高さとウィンドウ フレームの幅を決定し、指定された座標からそれらを差し引くことです (ゲーム ウィンドウ内でそれらに隣接して配置されているため、適切に調整する場合)、コンテンツ フレーム内の相対的な位置を求めます。
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;
それはウィンドウに相対的です。ウィンドウには の端に境界線が含まれているcontentPane
ため、0,0 ではなく 3, 25 が表示されます。MouseListener
にcontentPane
直接追加するか、フレームを使用Insets
して境界線を考慮することができます。