添加动画GIF到摇摆标签

时间:2012-12-27 07:57:49

标签: java swing animation jframe jlabel

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
它就在右边电视的正上方。旋转卷轴。

3 个答案:

答案 0 :(得分:7)

通过在EDT中休眠2秒,可以防止它完成工作(比如重新绘制GUI并显示动画gif)。移除对Thread.sleep()的电话。

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

答案 1 :(得分:3)

What else can I do to display animation ?

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

enter image description here

<强> CODE:

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);

                       }
 }

答案 2 :(得分:1)

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