2014-11-07 3 views
1

Я пытаюсь получить gif, чтобы появиться на одном из моих JFrame, и программа компилируется, но не показывает gif, который я хочу показать. Это вопрос, где у меня есть gif, хранящийся на моем компьютере?Gif не отображается в JFrame

import javax.swing.*; 
import java.awt.*; 
import java.util.*; 


public class iWorkoutScreen 
{ 
    public void iWorkoutScreen() 
    {  
    String calories = "this many"; 

    this.setBackground(Color.WHITE); 
    this.setLayout(new BorderLayout()); 
    this.setPreferredSize(new Dimension(800, 400)); 
    this.pack(); 

    JButton button = new JButton("Press to Start Workout"); 
    this.add(button, BorderLayout.PAGE_START); 

    JLabel timer = new JLabel("this timer will be better"); 
    timer.setPreferredSize(new Dimension(400, 10)); 
    ImageIcon timerIcon = new ImageIcon("7TaK4G8TA.gif"); 
    timer.setIcon(timerIcon); 
    this.add(timer, BorderLayout.CENTER); 

    button = new JButton("Button 3 (LINE_START)"); 
    this.add(button, BorderLayout.LINE_START); 

    button = new JButton("Long-Named Button 4 (PAGE_END)"); 
    this.add(button, BorderLayout.LINE_END); 

    JLabel caloriesBurned = new JLabel("You have burned " + calories + " calories!!"); 
    this.add(caloriesBurned, BorderLayout.PAGE_END); 
    } 
} 
+0

Проблема, скорее всего, местоположение изображения. Пожалуйста, выполните поиск. Каждый день здесь задают целый вопрос о добавлении изображений, и многие из проблем вызваны расположением файла относительно используемого пути. См. [Здесь] (http://stackoverflow.com/a/9866659/2587435) –

+0

Также вы должны упаковать фрейм _after_, добавив свои компоненты. –

+0

Ресурсы приложения станут частью встроенных ресурсов к моменту развертывания, поэтому целесообразно начать доступ к ним, как если бы они были, прямо сейчас. К [тегу: embedded-resource] должен быть доступен URL, а не файл. См. [Info. страница для встроенного ресурса] (http://stackoverflow.com/tags/embedded-resource/info) для того, как формировать URL-адрес. –

ответ

2

Следующие MCVE работают. Он не только изменяет метод на конструктор, но и исправляет другие проблемы. Это горячие ссылки на изображение, чтобы оно работало для всех.

import java.awt.*; 
import java.net.MalformedURLException; 
import java.net.URL; 
import javax.swing.*; 

public class iWorkoutScreen extends JFrame { 

    public iWorkoutScreen() throws MalformedURLException { 
     String calories = "this many"; 

     this.setBackground(Color.WHITE); 
     this.setLayout(new BorderLayout()); 

     JButton button = new JButton("Press to Start Workout"); 
     this.add(button, BorderLayout.PAGE_START); 

     JLabel timer = new JLabel("this timer will be better"); 
     ImageIcon timerIcon = new ImageIcon(
       new URL("http://i.imgur.com/T8x0I29.png")); 
     timer.setIcon(timerIcon); 
     this.add(timer, BorderLayout.CENTER); 

     button = new JButton("Button 3 (LINE_START)"); 
     this.add(button, BorderLayout.LINE_START); 

     button = new JButton("Long-Named Button 4 (PAGE_END)"); 
     this.add(button, BorderLayout.LINE_END); 

     JLabel caloriesBurned = new JLabel(
       "You have burned " + calories + " calories!!"); 
     this.add(caloriesBurned, BorderLayout.PAGE_END); 
     this.pack(); 
    } 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 

      @Override 
      public void run() { 
       try { 
        JFrame f = new iWorkoutScreen(); 
        f.setLocationByPlatform(true); 
        f.setVisible(true); 
       } catch (MalformedURLException ex) { 
        ex.printStackTrace(); 
       } 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
Смежные вопросы