Java 实现MouseListener与addMouseListener

Java 实现MouseListener与addMouseListener,java,events,mouseevent,mouselistener,Java,Events,Mouseevent,Mouselistener,胡,伙计们 我在实现MouseListener接口和addMouseListener时有一种奇怪的行为。 这是我的代码: public class SwitchButton extends JPanel { public static final Dimension PREF_SIZE = new Dimension(32, 16); private SwitchButtonModel switchButton; public SwitchButton() {

胡,伙计们

我在实现MouseListener接口和addMouseListener时有一种奇怪的行为。 这是我的代码:

public class SwitchButton extends JPanel {
    public static final Dimension PREF_SIZE = new Dimension(32, 16);
    private SwitchButtonModel switchButton;

    public SwitchButton() {
       this.setBorder(BorderFactory.createEmptyBorder(0, 0, (int)PREF_SIZE.getWidth(), (int)PREF_SIZE.getHeight()));
       switchButton = new SwitchButtonModel();
       addMouseListener(new MouseAdapter() {
           @Override
           public void mouseClicked(MouseEvent e) {
               switchButton.toggleStatus();
           }
       });
    }
这个代码有效。switchButton的toggleStatus()方法在我单击面板区域时执行

如果我实现MouseListener接口,则永远不会调用mouseClicked事件

public class SwitchButton extends JPanel implements MouseListener {
    public static final Dimension PREF_SIZE = new Dimension(32, 16);
    private SwitchButtonModel switchButton;

    public SwitchButton() {
        this.setBorder(BorderFactory.createEmptyBorder(0, 0, (int)PREF_SIZE.getWidth(), (int)PREF_SIZE.getHeight()));
        switchButton = new SwitchButtonModel();

        @Override
        public void mouseClicked(MouseEvent arg0) {
            switchButton.toggleStatus();

        }
... All other methods of MouseListener interface ...
为什么??你能帮助我吗?
谢谢大家!

因为您从未在第二种情况下添加鼠标侦听器。你仍然需要做
addMouseListener(这个)
。哦,我的天哪,这太愚蠢了!非常感谢你!因为您从未在第二种情况下添加鼠标侦听器。你仍然需要做
addMouseListener(这个)
。哦,我的天哪,这太愚蠢了!非常感谢你!