2010-05-29 14 views

Antwort

29

Mit Schwung könnte man einfach ein JLabel verwenden

public static void main(String[] args) throws MalformedURLException { 

     URL url = new URL("<URL to your Animated GIF>"); 
     Icon icon = new ImageIcon(url); 
     JLabel label = new JLabel(icon); 

     JFrame f = new JFrame("Animation"); 
     f.getContentPane().add(label); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 
+6

Aus irgendeinem Grund, wenn Sie Ihre 'ImageIcon' Objekt mit so etwas wie dieses' Icon Symbol = new ImageIcon erhalten (ImageIO.read (getClass() getResourceAsStream ("iconasresource.gif")).); 'Ihr GIF wird nicht animiert –

+2

In der Tat, die Erstellung eines ImageIcon mit ImageIO.read animiert das gif aus irgendeinem Grund nicht. Vielleicht offensichtlich, aber Sie können die URL der Ressource bekommen. 'URL url = getClass() getResource ("/ img.gif");'. –

+0

Ich benutze es mit Java8 und es animiert nicht mein GIF ... –

5

Zum Laden animierte Gifs in einem Quellcode-Paket gespeichert (im Quellcode), das funktionierte für mich:

URL url = MyClass.class.getResource("/res/images/animated.gif"); 
ImageIcon imageIcon = new ImageIcon(url); 
JLabel label = new JLabel(imageIcon); 
+0

Genau das funktioniert bei mir nicht. Das Bild wird geladen, aber nur das erste Bild wird angezeigt, keine Animation. – lukfi

-2
public class aiubMain { 
public static void main(String args[]) throws MalformedURLException{ 
    //home frame = new home(); 
    java.net.URL imgUrl2 = home.class.getResource("Campus.gif"); 

Icon icon = new ImageIcon(imgUrl2); 
JLabel label = new JLabel(icon); 

JFrame f = new JFrame("Animation"); 
f.getContentPane().add(label); 
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
f.pack(); 
f.setLocationRelativeTo(null); 
f.setVisible(true); 
} 
} 
4

Diese Arbeit für mich!

public void showLoader(){ 
     URL url = this.getClass().getResource("images/ajax-loader.gif"); 
     Icon icon = new ImageIcon(url); 
     JLabel label = new JLabel(icon); 
     frameLoader.setUndecorated(true); 
     frameLoader.getContentPane().add(label); 
     frameLoader.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frameLoader.pack(); 
     frameLoader.setLocationRelativeTo(null); 
     frameLoader.setVisible(true); 
    } 
+0

Es ist gut, eine gewisse Erklärung über Ihren Code hinzuzufügen. Wie ist es anders, warum funktioniert es? Danke (Moderator). –

3

Ich kam hier auf der Suche nach der gleichen Antwort, aber basierend auf den Top-Antworten, kam ich mit einem einfacheren Code. Hoffe, dass dies zukünftige Suchen helfen wird.

Icon icon = new ImageIcon("src/path.gif"); 
      try { 
       mainframe.setContentPane(new JLabel(icon)); 
      } catch (Exception e) { 
      } 
0
//Class Name 
public class ClassName { 
//Make it runnable 
public static void main(String args[]) throws MalformedURLException{ 
//Get the URL 
URL img = this.getClass().getResource("src/Name.gif"); 
//Make it to a Icon 
Icon icon = new ImageIcon(img); 
//Make a new JLabel that shows "icon" 
JLabel Gif = new JLabel(icon); 

//Make a new Window 
JFrame main = new JFrame("gif"); 
//adds the JLabel to the Window 
main.getContentPane().add(Gif); 
//Shows where and how big the Window is 
main.setBounds(x, y, H, W); 
//set the Default Close Operation to Exit everything on Close 
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
//Open the Window 
main.setVisible(true); 
    } 
} 
0

Ich wollte die GIF-Datei in einer GUI setzen, aber mit anderen Elementen angezeigt. Und die GIF-Datei würde aus dem Java-Projekt und nicht aus einer URL stammen.

1 - Top der Schnittstelle wäre eine Liste von Elementen, in denen wir wählen können

2 - Zentrum würde das animierte GIF sein

3 - Unten das Element aus der Liste ausgewählt würde anzuzeigen

Hier ist mein Code (ich brauche zwei Java-Dateien, die erste (Interf.java) ruft die zweite (Display.java)):

1 - Interf.java

public class Interface_for { 

    public static void main(String[] args) { 

     Display Fr = new Display(); 

    } 
} 

2 - Display.java

Infos: shure, der einen neuen Quellordner (NEW> Quellordner) in Ihrem Java-Projekt und stellen Sie das GIF innen zu erstellen für sie als Datei zu sehen.

Ich erhalte die GIF-Datei mit dem folgenden Code, also kann ich es es in einem Glas-Projekt exportieren (es ist dann animiert).

URL url = getClass() getClassLoader() getResource ("fire.gif")..;

public class Display extends JFrame { 
    private JPanel container = new JPanel(); 
    private JComboBox combo = new JComboBox(); 
    private JLabel label = new JLabel("A list"); 
    private JLabel label_2 = new JLabel ("Selection"); 

    public Display(){ 
    this.setTitle("Animation"); 
    this.setSize(400, 350); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setLocationRelativeTo(null); 
    container.setLayout(new BorderLayout()); 
    combo.setPreferredSize(new Dimension(190, 20)); 
    //We create te list of elements for the top of the GUI 
    String[] tab = {"Option 1","Option 2","Option 3","Option 4","Option 5"}; 
    combo = new JComboBox(tab); 

    //Listener for the selected option 
    combo.addActionListener(new ItemAction()); 

    //We add elements from the top of the interface 
    JPanel top = new JPanel(); 
    top.add(label); 
    top.add(combo); 
    container.add(top, BorderLayout.NORTH); 

    //We add elements from the center of the interface 
    URL url = getClass().getClassLoader().getResource("fire.gif"); 
    Icon icon = new ImageIcon(url); 
    JLabel center = new JLabel(icon); 
    container.add(center, BorderLayout.CENTER); 

    //We add elements from the bottom of the interface 
    JPanel down = new JPanel(); 
    down.add(label_2); 
    container.add(down,BorderLayout.SOUTH); 

    this.setContentPane(container); 
    this.setVisible(true); 
    this.setResizable(false); 
    } 
    class ItemAction implements ActionListener{ 
     public void actionPerformed(ActionEvent e){ 
      label_2.setText("Chosen option: "+combo.getSelectedItem().toString()); 
     } 
    } 
} 
Verwandte Themen