簡體   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