2011-01-10 6 views
0

IはX位置とフォーム上のマウスポインタのY位置を保持する2つのラベルを持つフレームを作成する次のコードポインターxとyの位置が4と23以下にならないのはなぜですか?

import javax.swing.*; 


import java.awt.event.*; 

public class MousePos implements MouseMotionListener{ 

    JLabel x = new JLabel(); 
    JLabel y = new JLabel(); 

    public static void main(String[] args) { 
     MousePos mp =new MousePos(); 
     mp.go(); 
    } 

    public void go() { 
     JFrame frame = new JFrame("Mouse Position"); 

     frame.addMouseMotionListener(this); 

     JPanel p =new JPanel(); 
     p.add(x); 
     p.add(y); 

     frame.getContentPane().add(p); 
     frame.setSize(150,150); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 

    @Override 
    public void mouseDragged(MouseEvent e) { 


    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 
     x.setText("X : " + e.getX()); 
     y.setText("Y : " +e.getY()); 

    } 

} 

を有します。
私が学んだのはx値で、y値は左上角で0と0になります
問題は、値がxでは4、yでは23より小さくならないということです。
誰も私にその理由を教えてもらえますか?
ありがとうございます。

答えて

3
frame.addMouseMotionListener(this); 

座標はコンテンツペインではなく、フレームを基準にしています。 4はフレームの境界線の幅、23は境界線の高さ+フレーム "タイトル領域"です。

代わりにこれを試してみてください:

p.addMouseMotionListener(this); 

を使用すると、ボタンが国境を越えている場合や、フレームは残念ながらイベントを発生しないという意思、ノート、によってフレームマウスイベントを聴いている場合タイトル領域...だからこそ、フレームの左上隅を指している場合は、オブザーバ(0,0)を表示しません。

関連する問題