2011-10-29 19 views
0

私は1つのJavaアプリケーションを持っています。 ONYを含む1 JMenu48 JMenuItem(s) 各JMenuItems私はアニメーションGIFとアイコンを設定します。setIconを使用したJava Swing/AWT Gifアニメーション付き高負荷

私は問題を作成していません。 また、実行中に問題はありません。 しかし、私はそれを実行し、次にJMenuItemを表示するときに問題が発生しました。 私のGIFアニメーションは非常に高いPCプロセスを消費しているようです! そして、アニメーションが速すぎるように見えます!通常のアニメーションフレームレートではありません。

だから、いつでも私は、Javaアプリケーションを実行し、をしようとしたときのJMenuItemCPUプロセス が高くなっています...!

をご覧ください。this Preview:私のJavaアプリケーションが実行されると、それが撮影されます。 これを解決する最良の方法は何ですか?

答えて

1

解決策の人が見つかりました! GIFアニメーションにはたくさんのフレームがあります。各フレームには独自のタイミングがあります。 1つのGIFアニメーションファイルを再オープンすると、0フレームのフレームレートが問題であることがわかりました。今私は0.1フレームレートを若干上回るように変更する必要があります。それはすべて解決された問題です。

3

このSSCCEからどのような結果が得られますか?私のシステムはスタートアップ時に40にピークを迎え、平均で約20-30にジャンプします。アニメーション化されたGIFのレンダリングはやや不安定です。

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

class Gif48 { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       String url = "http://1point1c.org/gif/thum/plnttm.gif"; 
       int w = 12; 
       int h = 4; 
       JPanel p = new JPanel(new GridLayout(h,w,2,2)); 
       String pre = "<html><body><img src='"; 
       String post = "'>"; 
       for (int ii=0; ii<w*h; ii++) { 
        JLabel l = new JLabel(
         pre + url + post); 
        l.setBackground(Color.BLACK); 
        l.setOpaque(true); 
        p.add(l); 
       } 
       JOptionPane.showMessageDialog(null, p); 
      } 
     }); 
    } 
} 

この問題を解決する最良の方法は何ですか?

GUIのコントロールでアニメーションGIFを使用しないでください。

+0

+1人類のために! Mac OS(x86)でも同様の結果が得られます。 – trashgod

+0

haha​​ha ....笑。 私はソリューションの人を見つけました! GIFアニメーションにはたくさんのフレームがあります。各フレームには独自のタイミングがあります。 1つのGIFアニメーションファイルを再オープンすると、0フレームのフレームレートが問題であることがわかりました。今私は0.1フレームレートを若干上回るように変更する必要があります。それはすべて解決された問題です。 Hehehehe ...私はまだ私のGUI上でそれらのGIFアニメーションファイルを使用し、私のCPUの正確性はもはや高くありません。 :D @アンドリュー・トンプソン – gumuruh

関連する問題