我的挥杆应用程序一个面板有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));
}*/
}
});
}
答案 0 :(得分: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生成侦听器代码。