我想为我的自定义Swing.JButton添加一个悬停效果,类似于Chrome浏览器上的图标:
在悬停之前>>
悬停后>>
我可以在创建按钮时将其设置为“之前”状态,但是当它悬停时我无法创建“边框凸起背景”.当我尝试将边框重新添加到按钮时,我在插入重新绘制新边框后获得了移动效果.
这是我目前的代码:
public class MyButton extends JButton implements MouseListener {
public MyButton(String iconPath, String toolTip) {
super(new ImageIcon(TipButton.class.getResource(iconPath)));
addMouseListener(this);
setBorder(null);
setBorderPainted(false);
setFocusPainted(false);
setOpaque(false);
setContentAreaFilled(false);
setToolTipText(toolTip);
}
public MyButton(String iconPath, String name, String toolTip) {
this(observers, iconPath, toolTip);
setText(name);
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {
if (e.getSource() != this) return;
setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
}
@Override
public void mouseExited(MouseEvent e) {
if (e.getSource() != this) return;
setBorder(null);
}
}
我想主要的逻辑应该是mouseEntered / mouseExited方法,但我不知道如何获得想要的效果.任何的想法?