2011-11-08 3 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 자체가 아니라 JFrame의 contentPane에 MouseListener 또는 MouseMotionListener를 추가하십시오. 그렇지 않으면 테두리, 메뉴, 삽입 및 기타 등등에 대해 걱정해야합니다. 예 :

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

또한 읽을 수 있도록 코드를 포맷하십시오.

관련 문제