2014-11-07 8 views
1

내 JFrame 중 하나에 GIF를 표시하려고하는데 프로그램이 컴파일되지만 표시하고 싶은 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

문제는 이미지의 위치가 가장 가능성이 큽니다. 검색을하십시오. 이미지 추가와 관련하여 매일 여기에 질문하는 많은 질문이 있으며 문제의 대부분은 사용되는 경로를 기준으로 파일의 위치로 인해 발생합니다. [here] (http://stackoverflow.com/a/9866659/2587435)를 참조하십시오. –

+0

또한 프레임을 포장해야합니다. _after_ 구성 요소 추가 –

+0

배포시 응용 프로그램 리소스가 포함 리소스가 될 것이므로 시작하는 것이 좋습니다 현재있는 것처럼 액세스합니다. [tag : embedded-resource]는 파일이 아닌 URL로 액세스해야합니다. [info. URL을 구성하는 방법은 임베디드 리소스 페이지 (http://stackoverflow.com/tags/embedded-resource/info)를 참조하십시오. –

답변

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); 
    } 
}