gpt4 book ai didi

java - 如何将静态 Icon 与动画 Icon 结合起来

转载 作者:行者123 更新时间:2023-12-02 03:50:54 29 4
gpt4 key购买 nike

我有两个图标,其中一个图标为 .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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com