5
Icon icon = new ImageIcon(getClass().getResource( "/img/icon.gif" ) );
aButton = new JButton("Its a button", icon);

アニメーションの再生を停止できる方法はありますか?MouseMotionListenergifの静的jpgを割り当てることを考えていたので、ホバーするとアニメーションgifを割り当てますが、静的jpgを読み戻すことができるように、マウスを離すイベントはないと思います。

gifはボタン内でループしますが、カーソルを合わせると消えます。

マウスカーソルがボタン上にない場合、どうすればgifを静的にできますか?

を使用MouseMotionListenerした場合、マウスを外すとイベントが発生しますか?

@Override
public void mouseMoved(MouseEvent e) {
//play the gif
//if I take mouse off, call some method to stop playing animated gif
}

@Override
public void mouseDragged(MouseEvent e) {
}
4

2 に答える 2

5

見る:

明示的なマウスリスナーを設定する必要はありません。切り替えは自動的に行われます。

EGこの例ではMediaTracker、読み込み時間を考慮して、ポップされた画像をラベルに追加しませんでした。エンドユーザーはImageObserver(最初のダイアログを閉じる前に、スピンが表示されるまで待ちます)です。

import java.awt.*;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.swing.*;

public class ImageSwapOnButton {

    public static void main( String[] args ) throws Exception {
        URL url = new URL("http://1point1c.org/gif/thum/plnttm.gif");

        Image image = Toolkit.getDefaultToolkit().createImage(url);
        ImageIcon spinIcon = new ImageIcon(image);
        JOptionPane.showMessageDialog(null, new JLabel(spinIcon));

        // create a static version of this icon
        BufferedImage bi = new BufferedImage(150,150,BufferedImage.TYPE_INT_ARGB);
        Graphics g = bi.getGraphics();
        g.drawImage(image,0,0,null);
        g.dispose();
        ImageIcon staticIcon = new ImageIcon(bi);

        JButton button = new JButton(staticIcon);
        button.setRolloverIcon(spinIcon);
        JOptionPane.showMessageDialog(null, button);
    }
}

また、静止画像をJPEGにしないでください。JPEGは不可逆であり、透過性をサポートしていません。シングルフレームGIFまたはPNGのいずれかを使用します。

于 2012-10-13T17:59:27.160 に答える
-1
button.setIcon(new ImageIcon("/*icon location*/"));
button.setRolloverIcon(new ImageIcon("/*icon location*/"

マウスポインタがボタンの上に移動しても、アニメーションGIF画像が非表示になることはありません。

于 2014-11-07T10:39:59.093 に答える