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
它就在右边电视的正上方。旋转卷轴。
答案 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
,您可以根据需要对其进行修改。
<强> 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(事件派发线程)上执行长时间运行的任务。