作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个图标,其中一个图标为 .gif
,另一个图标为 .png
。所以我想组合这些图标,将动画图标放在另一个图标之上。
此代码适用于静态
图标,但在放置动画
图标时,它不会打印动画。
public class Combine implements Icon{
private final Icon back;
private final Icon front;
public Combine(Icon pBack, Icon pFront) {
this.back= pBack;
this.front= pFront;
}
@Override
public int getIconHeight() {
return Math.max(front.getIconHeight(), back.getIconHeight());
}
@Override
public int getIconWidth() {
return Math.max(front.getIconWidth(), back.getIconWidth());
}
@Override
public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3) {
back.paintIcon(arg0, arg1, arg2, arg3);
front.paintIcon(arg0, arg1, arg2, arg3);
}
}
我正在使用这个加载图标:
Icon back = new ImageIcon(Toolkit.getDefaultToolkit().createImage(MyClass.class.getResource(source)));
Icon front = new ImageIcon(Toolkit.getDefaultToolkit().createImage(MyClass.class.getResource(source)));
编辑:
我想使用 JButton 图标。
最佳答案
one of them has a .gif as an Icon,
我认为你需要使用 JLabel 来获得动画。也就是说,JLabel 负责在图标动画时重新绘制图标。
尝试在两个 JLabel 中显示两个图标:
JLabel front = new JLabel( new ImageIcon(...) );
JLabel back = new JLabel( new ImageIcon(...) );
back.setLayout( new GridBagLayout() );
back.add(front, new GridBagConstraints());
正面图标应位于背面图标的中心。
您可能还想查看Compound Icon这是类的一个更灵活的版本,允许您将 2 个或更多图标组合成一个。
关于java - 如何将静态 Icon 与动画 Icon 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878865/
我是一名优秀的程序员,十分优秀!