一般人都知道gif文件可以有几帧
但是如果作为一个图标加载道label上是不可能的(这个问题困扰我几天),我现在知道的方法就是
1。把这个gif拆成单独的帧,然后用动画形式来实现它,但是个人认为这样太复杂了,发现了一个可以参考的例子大家可以在j2sdk1.4.2\demo\jfc\Java2D下找到Java2Demo.jar的文件运行它,在images选项卡下左上方有个duke run的动画,那个上面跑动的duke就是个多帧的gif动画,代码见在j2sdk1.4.2\demo\jfc\Java2D\src\java2d\demos\Images下的DukeAnim.java我看的不是很明白,企图去找duke.running.gif这个图像,但是发现根本不存在,还有程序中涉及到的图片都不存在在任何地方(我搜索了的),感觉上莫名其妙的,于是我把这段程序修改成为applet,允许就看不到图片了。不知道哪位兄弟能给我点提示感谢!!!!!!!!
但是如果作为一个图标加载道label上是不可能的(这个问题困扰我几天),我现在知道的方法就是
1。把这个gif拆成单独的帧,然后用动画形式来实现它,但是个人认为这样太复杂了,发现了一个可以参考的例子大家可以在j2sdk1.4.2\demo\jfc\Java2D下找到Java2Demo.jar的文件运行它,在images选项卡下左上方有个duke run的动画,那个上面跑动的duke就是个多帧的gif动画,代码见在j2sdk1.4.2\demo\jfc\Java2D\src\java2d\demos\Images下的DukeAnim.java我看的不是很明白,企图去找duke.running.gif这个图像,但是发现根本不存在,还有程序中涉及到的图片都不存在在任何地方(我搜索了的),感觉上莫名其妙的,于是我把这段程序修改成为applet,允许就看不到图片了。不知道哪位兄弟能给我点提示感谢!!!!!!!!
help~~~~~~~~~~
这个我已经尝试过了
以前csdn可不是这样的哦
我的是把它做成imageicon上后,再加载到combobox上就不行了class HeadPicCombobox extends DefaultComboBoxModel {//头象列表类
public HeadPicCombobox(String[] pics) {
for(int i=0; i < pics.length; ++i) { addElement(new Object[] { new ImageIcon(pics[i]) } );
}
} public Icon getIcon(Object object) {
Object[] array = (Object[])object;
return (Icon)array[0];
}
}
其中pics[i]里面就是多帧的图片路径,路径肯定是正确的,因为其他同一目录的单帧图片都能加载
import java.awt.Component;
import java.awt.Graphics;
import java.net.URL;import javax.swing.*;public class T {
public static void main(String[] args)
{
final JComboBox comboBox = new JComboBox(); DefaultComboBoxModel model = new DefaultComboBoxModel();
ImageIcon icon1 = new MyImageIcon(T.class.getResource("1.gif"));
ImageIcon icon2 = new MyImageIcon(T.class.getResource("2.gif"));
ImageIcon icon3 = new MyImageIcon(T.class.getResource("3.gif"));
model.addElement(icon1);
model.addElement(icon2);
model.addElement(icon3);
comboBox.setModel(model); DefaultListCellRenderer renderer = new DefaultListCellRenderer() {
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus)
{
if (value instanceof MyImageIcon) {
MyImageIcon icon = (MyImageIcon) value;
if (index == -1) {
icon.setComp(comboBox);
}
else {
icon.setComp(list);
}
}
return super.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
}
};
comboBox.setRenderer(renderer);
JFrame f = new JFrame();
f.getContentPane().add(comboBox, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
static class MyImageIcon extends ImageIcon {
private Component comp = null;
public void setComp(Component comp)
{
this.comp = comp;
}
public MyImageIcon(String filename)
{
super(filename);
} public MyImageIcon(URL location)
{
super(location);
} public synchronized void paintIcon(Component c, Graphics g, int x, int y)
{
if (comp != null) {
super.paintIcon(comp, g, x, y);
}
else {
super.paintIcon(c, g, x, y);
}
}
}
}