2012-05-16 2 views
4

내가 JLabel의에서 애니메이션 GIF를로드하기 위해 노력하고있어 이상한 것들하지만이 작동하는 동안 :로드 애니메이션 GIF는

URL urlsd; 
try { 
    urlsd = new URL("http://pscode.org/media/starzoom-thumb.gif"); 
    ImageIcon imageIcon = new ImageIcon(urlsd); 
    JLabel progress = new JLabel(imageIcon);  
    progress.setBounds(5, 20, 66, 66); 
    contentPane.add(progress); 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} 

이, 다른 한편으로는, 나는 싶지 않아하지 않습니다 GIF가 이미 있기 때문에 URL에서 GIF를 가져옵니다. 로드 결과이는 GIF의 첫 번째 프레임을 보여줍니다

try { 
    ImageIcon imageIcon = new ImageIcon(ImageIO.read(ClassLoader.getSystemResourceAsStream("res/images/progress_indicator.gif"))); 

    JLabel progress = new JLabel(imageIcon); 
    imageIcon.setImageObserver(progress); 
    progress.setBounds(5, 20, 66, 66); 
    contentPane.add(progress); 
} catch (MalformedURLException e) { 

    e.printStackTrace(); 
} 

내가 이것에 대한 추론이 있어야 같아요 ....하지만 그것을 찾을 수 없습니다 ...

감사합니다! 알렉스

+0

클래스 로더는,이 링크를 시도,이 몇 가지 도움이 될 수있는 희망을 정말 액세스,'응용 프로그램 Resources'의 방법이 아니다, [프로젝트에 이미지를로드하는 방법 (http://stackoverflow.com/ 9864657/load-icon-image-exception/9866659 # 9866659) –

+0

이 [Java 문서] (http://docs.oracle.com/javase/7/docs/technotes/guides/)에 설명 된대로 ClassLoader를 사용하지 않는 이유는 무엇입니까? lang/resources.html), "모든 클래스 로더는 클래스 파일 검색과 유사한 방식으로 시스템 리소스로 먼저 리소스를 검색합니다" –

+0

@AlejandroVK : 작업 예제에서 this [thread] (http : //stackoverflow.com/questions/9721421/show-image-by-click-jbutton/9722205#9722205) –

답변

10

당신은 그런 당신의 GIF 파일을로드하는 시도 할 수 있습니다 :

public class Test extends JPanel { 
    public Test() { 
     ImageIcon imageIcon = new ImageIcon(Test.this.getClass().getResource("starzoom-thumb.gif")); 
    } 
} 

또는 Test.class.getResouce()에 의해

이 상황이 정적 인 경우.

+0

Ahha, 나는이 대답을 가지고 갈 것이다. getClass(). getResource (...) i 가는 길 :-) –

+0

나는 이것이 답이라고 생각한다. getResourceAsStream에 의해 반환 된 스트림에서 이상한 일이 발생합니다 (예 : 사운드 앱이 스트림이 '위치 변경 불가능'으로 인해 실패 할 수 있음). 그러나'URL'을 제공하면 잘 동작합니다. –

+0

고마워, 그게 내가 처음에 슬래시를 포함해야한다는 것을 깨닫기 위해서는 http://stackoverflow.com/questions/8960381/runnable-jars-missing-buttons/9278270#9278270을 확인해야만했다. getSystemResourceAsStream 접근법을 사용하여 필요하지 않은 것 : D – AlejandroVK

0

나를 위해 일하는 코드 아래에서 이미지의 첫 번째 프레임 대신에 애니메이션이 표시됩니다.

public class Test extends JPanel { 
    public Test() { 
     ImageIcon yyyyIcon = new ImageIcon(xxx.class.getClassLoader().getResource("yyyy.gif")); 
     connectionLabel.setIcon(yyyy); 
    } 
} 
+0

몇 가지 설명을 추가하십시오. – jmattheis