2012-04-07 8 views
0

私はJavaで簡単なゲームを書いていて、マウスの座標を取得しようとしています。私が望むのは、コンテンツの左上隅に0,0ですが、私はウィンドウに相対的な座標を取得します。次のようにマウスの位置は内容ではなく、相対的なウィンドウです

enter image description here

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

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

、これはJFrame.addWindowListener()

任意の提案を経てフックアップされていますか?

答えて

3

イベントをウィンドウ枠内のコンテンツペインにバインドすることを確認します。その後、あなたのイベントは0,0座標から相対的にトリガーするはずです。あなたは、主に外部のイベントは必要としないと仮定します。これは、すべての目的のために別のイベントハンドラをそこにバインドすることができます。

もう1つの方法は、タイトルバーの高さとウィンドウ枠の幅を決定し、指定された座標からそれらを減算することです(ゲームウィンドウ内に隣接して配置されているためコンテンツフレーム。

0

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

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; 
関連する問題