Java 向swing标签添加动画GIF
我试着键入Java 向swing标签添加动画GIF,java,swing,animation,jframe,jlabel,Java,Swing,Animation,Jframe,Jlabel,我试着键入reel.setImageObserver(标签)但Eclipse将该语句标记为错误。为什么? 我还可以做什么来显示动画? 更新:新代码: public void run(){ Icon reel = common.ResourcesToAccess.reel; JLabel label = new JLabel(reel); JFrame frame = new JFrame(); frame.setUndecorat
reel.setImageObserver(标签)代码>但Eclipse将该语句标记为错误。为什么?
我还可以做什么来显示动画?
更新:新代码:
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();
}
虽然我可以在这里设置ImageObserver,但GIF仍然无法设置动画
杂项:
我正在使用的GIF可以在这里找到:
这是右边电视正上方的那个。旋转的卷轴。在EDT中睡眠2秒,会阻止它工作(如重新绘制GUI和显示动画gif)。删除对Thread.sleep()
的调用
如果希望帧在2秒后自动关闭,请使用javax.swing.Timer
计划在2秒后关闭。我还可以做些什么来显示动画?
在这里,我做了一个简短的示例,演示如何将图像添加到JLabel
。我使用了JApplet
,您可以根据需要修改它
代码:
@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);
}
可能是您在执行某些后台任务时试图显示动画GIF?退房
SwingWorker了解有关后台任务的更多信息,而不是在EDT(事件调度线程)上执行长时间运行的任务。否,为了测试代码,我使用了main方法。所以没有背景task@JB检查新代码。所有的魔力都在run()中,你看到的变量都是在这里工作正常的变量,只是它的旋转速度比网页中快得多。此外,您不需要调用reel.setImageObserver(label)
。如果您需要更多帮助(或自己找到问题所在),请编写一份演示问题的SSCCE。在此SSCCE中,假设gif文件名为animated.gif,并且位于类路径中,与SSCCE类位于同一个包中。下载一份新的gif副本来运行您的SSCCE,就像您是我们一样。我做到了,而且运行良好。因此,问题可能在代码的其他地方,或者在动画gif中,或者在构造ImageIcon的方式中。出于某种原因,如果您使用类似以下内容的ImageIcon
对象获得Icon=newImageIcon(ImageIO.read(getClass().getResourceAsStream(“iconaResource.gif”)代码>您的GIF将无法获取animated@jaime然后尝试给出完整路径?
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);
}
}