setCursor 方法不适用于一个 MouseListener (Java)

setCursor Method not Working on one MouseListener (Java)

我有一个按钮的 MouseListener,基本上说当鼠标进入该按钮附近时,它会将光标更改为手形光标。我所有的鼠标监听器都工作正常,但由于某种原因,这个单一的鼠标监听器不工作。它与所有其他 MouseListeners 相同。

viewAssignments.addMouseListener(new MouseAdapter() {
    public void mouseEntered(MouseEvent e) {
        // When mouse enters vicinity of a button, sets cursor to hand cursor.
        viewAssignments.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    }

    public void mouseExited(MouseEvent e) {
        // When mouse exits vicinity of the button, sets cursor to default cursor.
        viewAssignments.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    }
});

这是唯一一个不起作用的:

about.addMouseListener(new MouseAdapter() {
    public void mouseEntered(MouseEvent e) {
        // When mouse enters vicinity of a button, sets cursor to hand cursor.
        about.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    }

    public void mouseExited(MouseEvent e) {
        // When mouse exits vicinity of the button, sets cursor to default cursor.
        about.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    }
});

我不确定为什么这个不起作用。

可能无法解决问题,但不要创建自定义侦听器。

而是创建一个可以添加到任何组件的通用侦听器:

MouseListener ml = new MouseAdapter()
{
    @Override
    public void mouseEntered(MouseEvent e)
    {
        e.getComponent().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    }

    @Override
    public void mouseExited(MouseEvent e)
    {
        e.getComponent().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    }
}

然后根据需要添加到每个组件中:

viewAssignments = new JButton(...);
viewAssignments.addMouseListener(ml);

about = new JButton(...);
about.addMouseListener(ml);

我刚刚调用了 setCursor 方法。反正我不需要添加鼠标适配器。谢谢VGR.