gpt4 book ai didi

java - 在 Swing 中显示动画 BG

转载 作者:行者123 更新时间:2023-12-01 17:17:32 25 4
gpt4 key购买 nike

动画(循环)GIF 可以在 JLabel 或 HTML(在 JEditorPane 等格式化文本组件中)中显示,并且可以看到循环。

但是要加载图像以绘制为容器的背景,我通常会使用 ImageIO.read()Toolkit.getImage() (后者当我怀念上个千年时)。这两种加载图像的方法都不会产生循环图像,它通常只是第一帧。

如何加载背景动画图像?

EG

最佳答案

要获取用于自定义绘画的循环(动画)GIF,一个技巧是使用 ImageIcon 加载它。虽然从问题中列出的两种方法之一返回的图像是静态的,但从 ImageIcon 获得的图像是动画的。

下面的代码将添加 50 个按钮,然后在“缩放星星”动画 GIF1 的帧之后添加它们作为背景。 ImagePanel 会将图像拉伸(stretch)到面板的大小。

  1. 它是基于此图像。

Zooming Stars GIF

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.net.URL;

class ImagePanel extends JPanel {

private Image image;

ImagePanel(Image image) {
this.image = image;
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image,0,0,getWidth(),getHeight(),this);
}

public static void main(String[] args) throws Exception {
URL url = new URL("/image/iQFxo.gif");
final Image image = new ImageIcon(url).getImage();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame("Image");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationByPlatform(true);

ImagePanel imagePanel = new ImagePanel(image);
imagePanel.setLayout(new GridLayout(5,10,10,10));
imagePanel.setBorder(new EmptyBorder(20,20,20,20));
for (int ii=1; ii<51; ii++) {
imagePanel.add(new JButton("" + ii));
}

f.setContentPane(imagePanel);
f.pack();
f.setVisible(true);
}
});
}
}

关于java - 在 Swing 中显示动画 BG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61352735/

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