- Multiple instances of the same animated GIF in a Canvas (Java)
- public Tnt(int x, int y){
- this.x = x;
- this.y = y;
- ImageIcon ii = new ImageIcon("src/main/resources/modelObjects/tnt.gif");
- image = ii.getImage();
- image.flush();
- }
- public void draw(Graphics2D g2d, JPanel board){
- for(Tnt tnt: listTnt){
- g2d.drawImage(tnt.getImage(), tnt.getX(), tnt.getY(), board);
- }
- }
- public Tnt(int x, int y){
- this.x = x;
- this.y = y;
- Toolkit t = Toolkit.getDefaultToolkit ();
- image = t.createImage("src/main/resources/modelObjects/tnt.gif");
- }
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.net.MalformedURLException;
- import java.net.URL;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.SwingUtilities;
- import javax.swing.Timer;
- public class TestAnimatedGif {
- private static final int IMAGE_COUNT = 9;
- protected void initUI() {
- JFrame frame = new JFrame(TestAnimatedGif.class.getSimpleName());
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- final JPanel panel = new JPanel();
- frame.add(panel);
- frame.setSize(600, 400);
- frame.setVisible(true);
- final Timer t = new Timer(1000, null);
- t.addActionListener(new ActionListener() {
- int count = 0;
- @Override
- public void actionPerformed(ActionEvent e) {
- if (count < IMAGE_COUNT) {
- try {
- JLabel image = new JLabel(new ImageIcon(Toolkit.getDefaultToolkit().createImage(
- new URL("http://www.sitevip.net/gifs/bomba/BOMB-B_animado.gif"))));
- panel.add(image);
- count++;
- panel.revalidate();
- panel.repaint();
- System.err.println("image added");
- } catch (MalformedURLException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- } else {
- t.stop();
- }
- }
- });
- t.start();
- }
- public static void main(String[] args) {
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- new TestAnimatedGif().initUI();
- }
- });
- }
- }