Java MouseEntered指的是输入哪个组件?

use*_*460 -1 java swing awt mouselistener

在Java mouseListener中,其中一个方法是mouseEntered().

根据API它说:

鼠标进入组件时调用.

所以我的问题是: API指的哪个组件?它是添加mouseListener的组件吗?

例:

JLabel labelA = new JLabel();
JLabel labelB = new JLabel();
labelA.addMouseListener(new LabelMouseListener());
//Codes for LabelMouseListener class not shown
Run Code Online (Sandbox Code Playgroud)

因此,只有当我将鼠标光标移动到区域时,上述情况下的mouseEntered才有效labelA.我对吗?

注意:我已经测试过它,它仅适用于labelA.但是我想确认API是否仅仅是指添加监听器的组件.

我的第二个问题:如果我有一个JComponent哪个类实现了mouseListener,那么何时会在这个类中触发mouseEntered/Exited?

是否将鼠标光标移入/移出此JComponent?

例:

class myDisplay extends JComponent implements mouseListener
{
}
Run Code Online (Sandbox Code Playgroud)

Vin*_*igh 5

文件说明:

然后, 使用组件的addMouseListener方法向该组件注册从该类创建的侦听器对象.按下鼠标,释放单击(按下并释放)时会生成鼠标事件.当鼠标光标进入或离开组件时,也会生成鼠标事件.

我猜他们可以用最后一个语句的组件替换一个组件.无论哪种方式,测试它都会证实你的信念.

把它们加起来...

是的,它指的是添加侦听器的组件.

对于第二个问题,即使您实现了MouseListener,您仍然需要将其添加到该组件:

class MyClass extends JComponent implements MouseListener {

    public MyClass() {
         addMouseListener(this); //adds this instance's listener to this component
    }

    //override methods
}
Run Code Online (Sandbox Code Playgroud)

是的,它只会在你的鼠标进入/退出这个组件时触发(只有当你记得添加监听器时;它不会因为它的实现而无法工作,你必须添加它)