我有一个按钮,我已将其替换为图像,悬停时我希望该图像播放动画 gif。我添加了一个鼠标监听器并输入了将图像更改为 gif 的代码。图像变为gif;然而 gif 并没有动画。我在这个网站上查找过以前的答案,很少但没有一个能够提供帮助。
@Override
public void mouseEntered(MouseEvent arg0) {
try
{
Image img = ImageIO.read(getClass().getResource("images\\button_1_hover.gif"));
btnShip1.setIcon(new ImageIcon(img));
}
catch (IOException ex) {}
}
- 不要使用
MouseListener
为此,只需使用以下命令设置图标即可:setPressedIcon(Icon) http://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html#setPressedIcon%28javax.swing.Icon%29,
setRolloverIcon(Icon) http://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html#setRolloverIcon%28javax.swing.Icon%29等参见这个答案 https://stackoverflow.com/a/12875475/418556举个例子。
- 不要尝试“根据需要”加载图像,而是在初始化时加载它们并在按钮上设置它们。
- Change
getClass().getResource("images\\button_1_hover.gif")
to
getClass().getResource("/images/button_1_hover.gif")
- 更改用于加载图像的方法。 ImageIO 通常不会正确加载动画 GIF。看在 Swing 中显示动画 BG https://stackoverflow.com/q/10836832/418556了解详情。
- 更改表单代码
catch (Exception e) { ..
to
catch (Exception e) { e.printStackTrace(); // very informative! ..
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)