我有以下代码
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
问题是 x 的值永远不会低于 4,y 的值永远不会低于 23。
谁能告诉我为什么。
提前致谢。
最佳答案
frame.addMouseMotionListener(this);
坐标是相对于框架的,而不是相对于内容 Pane 的。 4是框架边框的宽度,23是边框加上框架“标题区域”的高度。
试试这个:
p.addMouseMotionListener(this);
<小时/>
如果您有意监听框架鼠标事件,请注意,不幸的是,如果按钮位于边框或标题区域上方,框架不会触发事件...这就是为什么您不观察 (0, 0) 如果您指向框架左上角。
关于java - 为什么指针的 x 和 y 位置永远不会低于 4 和 23?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645049/