2011-01-10 74 views
0

我有以下代码为什么指针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位置两个标签的帧。
我学到的是x值,y值在0左上角为0和0
问题是x的值永远不会低于4,y的值不会低于23。
谁能告诉我为什么。
在此先感谢。

回答

3
frame.addMouseMotionListener(this); 

的坐标是相对于框架而不是内容窗格中。 4是框架边框的宽度,23是边框加框架“标题区域”的高度。

试试这个:

p.addMouseMotionListener(this); 

如果您正在收听的意向,请注意帧的鼠标事件,该帧不幸的是,如果该按钮是在边境或不会触发事件标题区...这就是为什么你不观察(0,0),如果你指向帧的左上角。