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

时间:2015-03-07 19:18:14

标签: 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

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

注意:我已经对它进行了测试,并且仅适用于labelA。但是我想确认API是否仅仅是指添加监听器的组件。

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

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

示例:

class myDisplay extends JComponent implements mouseListener
{
}

1 个答案:

答案 0 :(得分:5)

文档说明:

  

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

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

总结一下......

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

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

class MyClass extends JComponent implements MouseListener {

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

    //override methods
}

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