2017-05-15 28 views
0

我的swing应用程序一个面板有6个按钮。当光标在按钮上时,我想将默认光标更改为手形光标,并且光标退出,然后它想要更改默认光标。现在我正在使用下面的代码来做这件事。如何在swing应用程序中获取鼠标指针组件

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)); 
      }*/ 
     } 

    }); 
} 

回答

3

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

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生成侦听器代码。

+0

+1 - 感谢您的帮助。这是工作。 e.getComponent()。setCursor(Cursor.getPredefinedCursor(Cursor .HAND_CURSOR)); –

相关问题