2016-04-05 5 views
1

Когда я пытаюсь загрузить анимацию gif, я просто получаю пустой кадр. Вы знаете, что не так? Файл находится в статистов/loading.gif:Проблема с анимацией gif в Java swing

package an1; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 


public class An1 { 

public static void main(String[] args){ 

    JFrame frame = new JFrame("Test"); 

    ImageIcon loading = new ImageIcon("extras/loading.gif"); 
    frame.add(new JLabel(loading, JLabel.CENTER)); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(400, 300); 
    frame.setVisible(true); 


} 
} 

Я получил loading.gif используя этот сайт http://spiffygif.com с настройками по умолчанию. Я просто изменил имя с gif.gif на load.gif. Вот оно:

enter image description here

+0

Вы бы разделили 'loading.gif'? – rdonuk

+1

Ваш код работает с обычными jpg-изображениями, хранящимися в одном месте? – Hirak

+0

Я изменил вопрос, чтобы включить gif. Очень ценю помощь. – kit

ответ

1

Я бегу Ubuntu (Linux), чтобы ваш код работал нормально для меня, что приводит меня к мысли, что это может быть проблемой файл-разделитель с именем файла. Вы используете Windows? Если да, попробуйте следующее:

ImageIcon loading = new ImageIcon("extras\\loading.gif"); 

Файл-разделитель в Windows - «\», а на MAC/Linux - «/». Поскольку «\» является escape-символом в Java, вам нужно использовать два из них, чтобы фактически заставить это работать.

+0

Сепаратор не имеет значения. Java/Windows справится с этим. Использование «/» проще, поэтому вам не нужно беспокоиться об экранировании «\». – camickr

+0

Я использую mac. Пробовал /, //, \ и \\, но все еще не работал. Любые другие идеи? – kit

1

Выполнить этот источник на вашей машине и проверить это работает ..

import java.net.*; 
import javax.swing.*; 

public class An1 { 

    public static void main(String[] args) throws MalformedURLException { 
     JFrame frame = new JFrame("Test"); 

     ImageIcon loading = new ImageIcon(
       new URL("http://i.stack.imgur.com/8IXqb.gif")); 
     frame.add(new JLabel(loading, JLabel.CENTER)); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(400, 300); 
     frame.setVisible(true); 
    } 
} 

нотабене Ресурсы приложений станут частью встроенных ресурсов к моменту развертывания, поэтому разумно начать доступ к ним, как если бы они были, прямо сейчас. должен быть доступен по URL, а не по файлу. См. info. page for embedded resource, как формировать URL-адрес.

+0

Ответьте на это. Это «не ответ» и требует удаления. –