繁体   English   中英

如何在swing应用程序中获取鼠标指针组件

[英]how to get mouse pointer component in swing application

我的挥杆应用程序的一个面板有6个按钮。 当光标移到按钮上时,我想将默认光标更改为手形光标,并且光标退出了,那么它想要更改默认光标。 现在我正在使用下面的代码来做这个事情。

private void btnRegisterReceiptMouseEntered(java.awt.event.MouseEvent evt) {                                                
    btnRegisterReceipt.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}                                               

private void btnRegisterReceiptMouseExited(java.awt.event.MouseEvent evt) {                                               
    btnRegisterReceipt.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}  

现在,我想将此代码写入每个按钮。

但是我想写一个通用的方法来做到这一点。 我已经尝试使用MouseListener做到这一点,但是我无法获得哪个是鼠标指针组件。

我不知道有没有可能。 如果有可能,请任何人告诉我该怎么做。

private void changeCursor() {
    addMouseListener(new MouseAdapter() {

        @Override
        public void mouseEntered( MouseEvent e ) {
            /*if ( mouse Entered compornent is button ) {
                button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
            } else {
                button.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
            }*/
        }

    });
}

编写一个通用的MouseListener(作为匿名类):

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

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

然后,您可以将MouseListener添加到所需的任何组件中:

btnRegisterReceipt.addMouseListener( ml );
anotherButton.addMouseListener( ml );

您也可以将此作为可重用的类:

public MousePointerListener extends MouseAdapter
{
    @Override
    public void mouseEntered(MouseEvent e)
    {
        e.getComponent( setCursor(...) );
    }

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

然后您使用:

MouseListener ml = new MousePointerListener();
btnRegisterReceipt.addMouseListener( ml );
anotherButton.addMouseListener( ml );

这两个示例中的关键点是,您可以从MouseEvent获取事件源,从而可以编写通用代码。 您应该为所有侦听器使用这种方法,而不是让IDE生成侦听器代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM