Java mouseEntered()和mouseMoved()之间的混淆 我的小程序窗口的坐标:

Java mouseEntered()和mouseMoved()之间的混淆 我的小程序窗口的坐标:,java,swing,event-handling,applet,mouseevent,Java,Swing,Event Handling,Applet,Mouseevent,左上角-(0,0) 左下角-(0199) 右上角-(349,0) 右下角-(349199) 我所期望的是: 当鼠标进入小程序窗口时,坐标(0,10) 当鼠标移动时,状态窗口中应显示消息“mouseX,mouseY移动鼠标”。其中mouseX和mouseY是鼠标的当前坐标 实际发生的情况: 消息“鼠标输入”不会显示在坐标(0,10)处,而是显示在鼠标进入小程序窗口的初始坐标处*** 例如,鼠标从左下角和右下角之间进入小程序窗口,比如说(187199),然后消息“鼠标输入”,而不是显示在(0,10)

左上角-(0,0)
左下角-(0199)
右上角-(349,0)
右下角-(349199)

我所期望的是:
  • 当鼠标进入小程序窗口时,坐标
    (0,10)

  • 当鼠标移动时,状态窗口中应显示消息
    “mouseX,mouseY移动鼠标”
    。其中
    mouseX
    mouseY
    是鼠标的当前坐标

  • 实际发生的情况: 消息
    “鼠标输入”
    不会显示在坐标
    (0,10)
    处,而是显示在鼠标进入小程序窗口的初始坐标处***

    例如,鼠标从
    左下角
    右下角
    之间进入小程序窗口,比如说
    (187199)
    ,然后消息
    “鼠标输入”
    ,而不是显示在
    (0,10)
    ,而是显示在
    (187199)

    我的问题 尽管在
    mouseenterned()
    中指定了
    mouseX=0
    mouseY=10
    ,但为什么消息
    “Mouse Entered”
    显示在鼠标进入小程序窗口的坐标处,而不是坐标
    (0,10)

    每次移动鼠标时,mouseMoved部分中的代码都会更新。因此,它之所以显示mouseX和mouseY而不是(0,10),是因为您在mouseMoved方法中更改了mouseX和mouseY的值。使其在鼠标的最后位置显示坐标。尝试创建一个不同的变量来跟踪鼠标的位置


    每次移动鼠标时,mouseMoved部分中的代码都会更新。因此,它之所以显示mouseX和mouseY而不是(0,10),是因为您在mouseMoved方法中更改了mouseX和mouseY的值。使其在鼠标的最后位置显示坐标。尝试创建一个不同的变量来跟踪鼠标的位置。

    当您将鼠标移到查看窗格上时,查看窗格会经常被重新绘制。

    您正在此处覆盖
    mouseX
    mouseY
    的值:

    public void mouseMoved(MouseEvent me)
    {
        mouseX = me.getX();
        mouseY = me.getY();
        showStatus("Moving mouse at "+mouseX+", "+mouseY);
    }
    
    这将导致移动鼠标时在这些坐标处进行重绘。如果您不想移动鼠标,可以使用局部变量,例如

    public void mouseMoved(MouseEvent me)
    {
        mouseX = me.getX();
        mouseY = me.getY();
        showStatus("Moving mouse at "+mouseX+", "+mouseY);
    }
    

    当您将鼠标移到查看窗格上时,它会经常被重新绘制。

    您正在此处覆盖
    mouseX
    mouseY
    的值:

    public void mouseMoved(MouseEvent me)
    {
        mouseX = me.getX();
        mouseY = me.getY();
        showStatus("Moving mouse at "+mouseX+", "+mouseY);
    }
    
    这将导致移动鼠标时在这些坐标处进行重绘。如果您不想移动鼠标,可以使用局部变量,例如

    public void mouseMoved(MouseEvent me)
    {
        mouseX = me.getX();
        mouseY = me.getY();
        showStatus("Moving mouse at "+mouseX+", "+mouseY);
    }
    

    首先执行的是哪个函数,
    mouseEntered
    mouseMoved
    ?@kevingomes
    mouseEntered
    为什么在
    mouseEntered
    完成执行之前,
    mouseMoved
    仍处于挂起状态?@kevingomes,因为当
    mouseMoved
    正在更改
    mouseX
    mouseY
    的值时,
    mouseEntered
    是否停止或继续执行,这两个任务都是在上排队的独立任务。我的意思是,无论它们是否同时运行?首先执行哪个函数,
    mouseEntered
    mouseEntered
    ?@kevingomes
    mouseEntered
    为什么在
    mouseEntered
    完成执行之前,
    mouseMoved
    仍处于挂起状态?@kevingomes,因为当
    mouseMoved
    正在更改
    mouseX
    mouseY
    的值时,
    mouseEntered
    是否停止或继续执行,这两个任务都是在上排队的独立任务。我的意思是,它们是否同时运行?