3
public void run(){
        Icon reel = common.ResourcesToAccess.reel;
        JLabel label = new JLabel(reel);
        JFrame frame = new JFrame();
        frame.setUndecorated(true);
        frame.getContentPane().add(label);
        frame.setSize(reel.getIconWidth(),reel.getIconHeight());
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        try{
            sleep(2*1000);
        }catch(InterruptedException e){

        }
        frame.dispose();
    }  

入力しようとしreel.setImageObserver(label);ましたが、Eclipseはそのステートメントにエラーのフラグを立てます。なんで?
アニメーションを表示するために他に何ができますか?



更新:新しいコード:

@Override
    public void run(){
        JFrame f = new JFrame();
        ImageIcon reel = (ImageIcon) common.ResourcesToAccess.reel;
        JLabel label = new JLabel(reel);
        reel.setImageObserver(label);
        f.getContentPane().add(label);
        f.setUndecorated(true);
        f.setSize(300, 300);
        f.setVisible(true);
    }  

ここでImageObserverを設定できますが、GIFはまだアニメーション化されません

その他:

私が使用しているGIFはここにあります:http:
//bestanimations.com/Electronics/Video/Video.html
これは右側のテレビの真上にあるものです。スピニングリール。

4

3 に答える 3

7

EDTで2秒間スリープすることにより、EDTがその作業(GUIの再描画やアニメーションGIFの表示など)を実行できないようにします。への呼び出しを削除しますThread.sleep()

フレームが2秒後に自動的に閉じるようにする場合は、を使用して2秒javax.swing.Timer後に閉じるようにスケジュールします。

于 2012-12-27T08:04:36.007 に答える
3

What else can I do to display animation ?

ここでは、短くて単純なEGを実行して、画像をに追加する方法を示しましたJLabel。使用JAppletしたので、必要に応じてこれを変更できます。

ここに画像の説明を入力してください

コード:

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JLabel;

public class JLabelWithIconExample extends JApplet
 {


    public void init(){

            ImageIcon icon = new ImageIcon("e:/guitar.gif");/*your path*/

        JLabel copyLabel = new JLabel(icon);
                    add(copyLabel);

                       }
 }
于 2012-12-27T09:07:14.797 に答える
1

バックグラウンドタスクの実行中にアニメーションGIFを表示しようとしている可能性がありますか?EDT(イベントディスパッチスレッド)で長時間実行されるタスクを実行する代わりに、SwingWorkerをチェックしてバックグラウンドタスクの詳細を確認してください。

于 2012-12-27T09:15:01.053 に答える