java - 为什么指针的 x 和 y 位置永远不会低于 4 和 23?

标签 java swing mouseevent

我有以下代码

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/

相关文章:

java - 调用实例化该类的方法

java - 用户输入错误后循环代码

java - 哪种线程实现方式最有利?

java - 如何在 JLabel 上显示多个图像

java - 有没有办法防止光标点击某个字符串?

javascript - JavaScript 中的鼠标事件问题

java - 使用分页从redis缓存中检索数据

每秒更新 GUI 的 Java 秒表?

Java - 如何从 Socket 更新 JProgressBar?

Java 查找我单击的图像?