3
public void run(){
        Icon reel = common.ResourcesToAccess.reel;
        JLabel label = new JLabel(reel);
        JFrame frame = new JFrame();
        frame.setUndecorated(true);
        frame.getContentPane().add(label);
        frame.setSize(reel.getIconWidth(),reel.getIconHeight());
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        try{
            sleep(2*1000);
        }catch(InterruptedException e){

        }
        frame.dispose();
    }  

我尝试输入reel.setImageObserver(label);,但 Eclipse 将该语句标记为错误。为什么?
我还能做些什么来显示动画?



更新:新代码:

@Override
    public void run(){
        JFrame f = new JFrame();
        ImageIcon reel = (ImageIcon) common.ResourcesToAccess.reel;
        JLabel label = new JLabel(reel);
        reel.setImageObserver(label);
        f.getContentPane().add(label);
        f.setUndecorated(true);
        f.setSize(300, 300);
        f.setVisible(true);
    }  

虽然我可以在这里设置 ImageObserver,但 GIF 仍然没有动画

杂项:

我正在使用的 GIF 可以在这里找到:http:
//bestanimations.com/Electronics/Video/Video.html
它是右侧电视上方的那个。旋转的卷轴。

4

3 回答 3

7

通过在 EDT 中休眠 2 秒,您可以阻止它完成其工作(例如重新绘制 GUI 并显示您的动画 gif)。删除对 的调用Thread.sleep()

如果您希望框架在 2 秒后自行关闭,请使用 ajavax.swing.Timer安排在 2 秒后关闭。

于 2012-12-27T08:04:36.007 回答
3

What else can I do to display animation ?

好吧,在这里我做了一个简短的 EG 来展示如何将图像添加到JLabel。我已经使用过JApplet,您可以根据需要对其进行修改。

在此处输入图像描述

代码:

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JLabel;

public class JLabelWithIconExample extends JApplet
 {


    public void init(){

            ImageIcon icon = new ImageIcon("e:/guitar.gif");/*your path*/

        JLabel copyLabel = new JLabel(icon);
                    add(copyLabel);

                       }
 }
于 2012-12-27T09:07:14.797 回答
1

可能是您在执行某些后台任务时尝试显示动画 GIF 吗?查看 SwingWorker 以了解有关后台任务的更多信息,而不是在 EDT(事件调度线程)上执行长时间运行的任务。

于 2012-12-27T09:15:01.053 回答