如何在组件的某个区域捕获鼠标运动事件?

时间:2014-12-10 07:07:18

标签: java

我使用一个有4层的Jlayered窗格,并在每一层中放入一个彩色标签,以区分彼此。这些层不完全重叠。我希望每次鼠标移动到图层时,会发生类似图层更改颜色的情况。如何让我的程序检测鼠标所在的哪个层并做出相应的反应?

1 个答案:

答案 0 :(得分:1)

假设您使用的是Swing,如果每个图层都是一个面板或其他类型的swing组件,您可以将MouseListener添加到面板或图层。

// Add a MouseListener to every individual layer
layer.addMouseListener(new MouseListener() {

    public void mouseEntered(MouseEvent e) {
         // This method will be fired each time the mouse enters the layer
         // So any code here will execute when the mouse enters said layer
         // Which means you could put code here to change the color, etc.
    }

    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseClicked(MouseEvent e) {}

});

如果您想了解有关该主题的更多信息,可以阅读有关如何从Oracle编写MouseListener的教程。 https://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

甚至可以观看有关如何创建MouseListener的视频。 https://www.youtube.com/watch?v=MpIHF4V3zMc