2011-11-08 25 views
2
public class mouse extends JFrame { 
    private int x, y; 
    private JLabel label; 

    public mouse() { 
     JPanel panel = new JPanel(); 
     addMouseMotionListener(new MouseMotion()); 
     label = new JLabel(); 
     panel.add(label); 
     setPreferredSize(new Dimension(400, 200)); 
     add(panel, BorderLayout.SOUTH); 
     pack(); 
     setVisible(true); 
    } 
    private class MouseMotion extends MouseMotionAdapter { 
     public void mouseMoved(MouseEvent e) { 
      x = e.getX(); 
      y = e.getY(); 
      label.setText("mouse coordinate " + "(" + x + "," + y + ")"); 
    }} 
    public static void main(String[]args) { 
     mouse a = new mouse(); 
    } 
} 

私は境界線にマウスを移動すると、それは(0,0)ではありません。どうして?たとえば、マウスを左上に移動すると、(0,0)ではなく(4,30)が表示されます。マウスの座標は?

答えて

5

あなたはボーダー、メニュー、インセット、などを心配する必要はありそうでない、のJFrameのcontentPaneで、ないのJFrame自身にのMouseListenerかのMouseMotionListenerを追加します。例:

getContentPane().addMouseMotionListener(new MouseMotion()); 

また、コードを読み取れるように書式を設定してください。

関連する問題