6

JLabelにアニメーション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();
}

これには理由があると思いますが、見つかりません。

ありがとう!アレックス

4

3 に答える 3

12

次のようにGIFファイルを読み込んでみてください。

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

またはTest.class.getResouce()、コンテキストが静的である場合に使用します。

于 2012-05-16T16:35:10.337 に答える
0

以下のコードは私のために働きました、それは画像の最初のフレームの代わりにアニメーションを表示します。

public class Test extends JPanel {
    public Test() {
        ImageIcon yyyyIcon = new ImageIcon(xxx.class.getClassLoader().getResource("yyyy.gif"));
        connectionLabel.setIcon(yyyy);   
    }
}
于 2016-08-09T07:42:55.423 に答える
0

したがって、それを行うためのより簡単な方法もあります。次の行は私がそれをした方法です。

this.setContentPane(new JLabel(new ImageIcon("Path To Gif File")));
于 2018-05-04T18:31:31.393 に答える