怎样才能让动画GIF在应用程序的一个界面上显示啊? 怎样才能让动画GIF在应用程序的一个界面上显示啊?哪位遇到过的,请提供一些经验。谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道支不支持GIF这种格式..不然得靠第三方类了. 直接drawImage就行了,简单的循环播放都没什么问题 将动画设给jbutton之类自然可以播放 不行啊!我做的动画GIF图形几个图片合成的。放在界面里只显示一个图片,无法连动啊。 ImageIcon icon = new ImageIcon("test.gif");JLabel label = new JLabel(icon); TO:gtlang78() 不行啊!放在界面里只显示一个图片,无法连动啊。 to: linyhe(he)ImageIcon icon = new ImageIcon("test.gif");JLabel label = new JLabel(icon);这样肯定没有问题,我试过了 TO:cuij7718显示一般的GIF图片是没有问题的!但是,显示合成的动画GIF图片是做不到的啊!?你的是显示动画GIF图片吗? TO:ALL我想显示的是合成的动画GIF图片(也就是几张GIF图片合成后会循环演示看去就象是动态的一样)。 这是JavaDocs上的例子, imganim.html,你看有没有帮助 import java.awt.*; import java.awt.image.*; import java.applet.*; public class AnimationExample extends Applet implements Runnable { Thread anim; MemoryImageSource imgsrc; Image memimg; int[] pixels; public void init() { pixels = new int[100 * 100]; imgsrc = new MemoryImageSource(100, 100, pixels, 0, 100); memimg = createImage(imgsrc); } public void start() { anim = new Thread(this); anim.start(); } public synchronized void stop() { anim = null; notify(); } public synchronized void run() { while (Thread.currentThread() == anim) { int x = (int) (Math.random() * 100); int y = (int) (Math.random() * 100); int r = (int) (Math.random() * 255); int g = (int) (Math.random() * 255); int b = (int) (Math.random() * 255); pixels[y * 100 + x] = ((int) (Math.random() * 0xffffff)) | (0xff<<24); memimg.flush(); repaint(); try {wait(100);} catch (InterruptedException e) {return;} } } public void paint(Graphics g) { // Draw the animated image g.drawImage(memimg, 0, 0, this); } } http://127.0.0.1/java/awt/GifPanel.java package net.javafaq.gif;import java.awt.Canvas;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.stream.FileImageInputStream;import com.sun.imageio.plugins.gif.GIFImageReader;import com.sun.imageio.plugins.gif.GIFImageReaderSpi;import com.sun.imageio.plugins.gif.GIFImageMetadata;public class GifPanel extends Canvas implements Runnable{ private int[] delays; private int[] lefts; private int[] tops; private BufferedImage[] images; private int count = 0; private int frames = 0; public GifPanel(String gifFile) { try { GIFImageReader gir = new GIFImageReader(new GIFImageReaderSpi()); gir.setInput(new FileImageInputStream(new File(gifFile))); frames = gir.getNumImages(true); delays = new int[frames]; lefts = new int[frames]; tops = new int[frames]; images = new BufferedImage[frames]; for(int i=0; i<images.length; i++) { GIFImageMetadata tMeta = (GIFImageMetadata)gir.getImageMetadata(i); delays[i] = tMeta.delayTime; lefts[i] = tMeta.imageLeftPosition; tops[i] = tMeta.imageTopPosition; images[i] = gir.read(i); } new Thread(this).start(); } catch(Exception e) { e.printStackTrace(); } } public void run() { while(true) { try { Thread.sleep(delays[count++] * 10);//? if(count==delays.length) count = 0; repaint(); }catch(Exception e){} } } public void update(Graphics graphics) { paint(graphics); } public void paint(Graphics graphics) { Graphics2D g = (Graphics2D)graphics; try { g.drawImage(images[count], lefts[count], tops[count], null); }catch(Exception e){} } public static void main(String[] args) { javax.swing.JFrame jf = new javax.swing.JFrame(); jf.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); jf.getContentPane().add(new GifPanel("1.gif")); jf.setSize(400, 400); jf.setVisible(true); }} 用JAVA做的酒店管理系统源码 JVM为我做了什么 用java写了个矩阵类,等待各位拍砖 求旋转矩阵算法,最好有code。 接口跟抽象类分别适合在什么情况下使用啊 struts中,消息框的表示 IBE预定机票出现问题(急!!!!!!!!!!!!!) 构造函数里的this????????高手进 资源文件压入 jar 包里就不能用了,怎么解决? 如何提取ArrayList里的串数组的元素?? 如何读取到gif文件的pix和offset 请问在JDK1.4中如何实现事件冒泡?
我做的动画GIF图形几个图片合成的。
放在界面里只显示一个图片,无法连动啊。
JLabel label = new JLabel(icon);
不行啊!
放在界面里只显示一个图片,无法连动啊。
ImageIcon icon = new ImageIcon("test.gif");
JLabel label = new JLabel(icon);
这样肯定没有问题,我试过了
显示一般的GIF图片是没有问题的!
但是,
显示合成的动画GIF图片是做不到的啊!?
你的是显示动画GIF图片吗?
我想显示的是合成的动画GIF图片(也就是几张GIF图片合成后会循环演示看去就象是动态的一样)。
import java.awt.image.*;
import java.applet.*; public class AnimationExample extends Applet implements Runnable {
Thread anim;
MemoryImageSource imgsrc;
Image memimg;
int[] pixels; public void init() {
pixels = new int[100 * 100];
imgsrc = new MemoryImageSource(100, 100, pixels, 0, 100);
memimg = createImage(imgsrc);
} public void start() {
anim = new Thread(this);
anim.start();
} public synchronized void stop() {
anim = null;
notify();
} public synchronized void run() {
while (Thread.currentThread() == anim) {
int x = (int) (Math.random() * 100);
int y = (int) (Math.random() * 100);
int r = (int) (Math.random() * 255);
int g = (int) (Math.random() * 255);
int b = (int) (Math.random() * 255);
pixels[y * 100 + x] =
((int) (Math.random() * 0xffffff)) | (0xff<<24);
memimg.flush();
repaint();
try {wait(100);} catch (InterruptedException e) {return;}
}
} public void paint(Graphics g) {
// Draw the animated image
g.drawImage(memimg, 0, 0, this);
}
}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.stream.FileImageInputStream;
import com.sun.imageio.plugins.gif.GIFImageReader;
import com.sun.imageio.plugins.gif.GIFImageReaderSpi;
import com.sun.imageio.plugins.gif.GIFImageMetadata;
public class GifPanel extends Canvas implements Runnable
{
private int[] delays;
private int[] lefts;
private int[] tops;
private BufferedImage[] images;
private int count = 0;
private int frames = 0;
public GifPanel(String gifFile)
{
try
{
GIFImageReader gir = new GIFImageReader(new GIFImageReaderSpi());
gir.setInput(new FileImageInputStream(new File(gifFile)));
frames = gir.getNumImages(true);
delays = new int[frames];
lefts = new int[frames];
tops = new int[frames];
images = new BufferedImage[frames];
for(int i=0; i<images.length; i++)
{
GIFImageMetadata tMeta = (GIFImageMetadata)gir.getImageMetadata(i);
delays[i] = tMeta.delayTime;
lefts[i] = tMeta.imageLeftPosition;
tops[i] = tMeta.imageTopPosition;
images[i] = gir.read(i);
}
new Thread(this).start();
}
catch(Exception e)
{
e.printStackTrace();
}
} public void run()
{
while(true)
{
try
{
Thread.sleep(delays[count++] * 10);//?
if(count==delays.length) count = 0;
repaint();
}catch(Exception e){}
}
} public void update(Graphics graphics)
{
paint(graphics);
} public void paint(Graphics graphics)
{
Graphics2D g = (Graphics2D)graphics;
try
{
g.drawImage(images[count], lefts[count], tops[count], null);
}catch(Exception e){}
} public static void main(String[] args)
{
javax.swing.JFrame jf = new javax.swing.JFrame();
jf.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
jf.getContentPane().add(new GifPanel("1.gif"));
jf.setSize(400, 400);
jf.setVisible(true);
}
}