में लोड करना मैं एक जार फ़ाइल में संग्रहीत एनिमेटेड gif से ImageIcon बनाने की कोशिश कर रहा हूं।जेएआर फ़ाइल से एनिमेटेड gif को ImageIcon
ImageIcon imageIcon = new ImageIcon(ImageIO.read(MyClass.class.getClassLoader().getResourceAsStream("animated.gif")));
छवि लोड होती है, लेकिन केवल एनिमेटेड gif का पहला फ्रेम होता है। एनीमेशन नहीं खेलता है।
यदि मैं फाइल सिस्टम पर एक फ़ाइल से एनिमेटेड gif लोड करता हूं, तो सब कुछ अपेक्षित काम करता है। एनीमेशन सभी फ्रेम के माध्यम से खेलता है। तो यह काम करता है:
ImageIcon imageIcon = new ImageIcon("/path/on/filesystem/animated.gif");
मैं एक जार फ़ाइल से एक छवि आइकन में एनिमेटेड gif कैसे लोड कर सकता हूं?
संपादित करें: यहां एक पूर्ण परीक्षण केस है, यह एनीमेशन प्रदर्शित क्यों नहीं करता है?
import javax.imageio.ImageIO;
import javax.swing.*;
public class AnimationTest extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
AnimationTest test = new AnimationTest();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
});
}
public AnimationTest() {
super();
try {
JLabel label = new JLabel();
ImageIcon imageIcon = new ImageIcon(ImageIO.read(AnimationTest.class.getClassLoader().getResourceAsStream("animated.gif")));
label.setIcon(imageIcon);
imageIcon.setImageObserver(label);
add(label);
pack();
} catch (Exception e) {
e.printStackTrace();
}
}
}
यह निश्चित उत्तर है। इस मुद्दे को कई घंटों के शोध के बाद धन्यवाद। यह ग्रहण से और जेएआरएस में मेवेन से संसाधनों को लोड करने में समस्या को हल करता है। आपका बहुत बहुत धन्यवाद! – guerda