Java: Animer un JButton

Author:

 math, list, méthode, list, set, swing, awt, JPanel, JFrame
{filelink=10238}



import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AnimationBouton extends JFrame
{ 
    public AnimationBouton()
    {
    	JFrame f = new JFrame("Animation des composant en Java");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(250, 200);
        JPanel pnl = new JPanel();
        pnl.add(new CustomButton("Lancer l'animation"));
        f.add(pnl);
        f.setVisible(true);
    }
	public static void main(String argv[]) 
    {
        Runnable showMyGUI = new Runnable() {
            public void run() {
                new AnimationBouton();
            }
        };
        SwingUtilities.invokeLater(showMyGUI);
    }
}
class CustomButton extends JButton implements ActionListener {

    Timer timer;                        
    int dureeAnimation = 5000;   // Le bouton reste 5 secondes dans l'ombre   
    long animStartTime;               
    int translateY = 0;               
    static final int MAX_Y = 100;

    /** Initialisation de JButton avec son texte */
    public CustomButton(String jbuttonText) 
    {
        super(jbuttonText);
        setOpaque(false);
        timer = new Timer(30, this);
        addActionListener(this);
    }


    public void paint(Graphics g) {
        g.translate(0, translateY);
        super.paint(g);
    }

     /*
      * Cette méthode gère les cliques
      * de lancement et d'arrêt de l'animation
      */
    public void actionPerformed(ActionEvent evt) {
        if (evt.getSource().equals(this)) {
            // Démarrer l'animation si le timer n'est pas encore d'exécution
            if (!timer.isRunning()) {
                animStartTime = System.nanoTime() / 1000000;
                this.setText("Stopper l'animation");
                timer.start();
            } else {
                timer.stop();
                this.setText("Lancer l'animation");
                translateY = 0;
            }
        } else {
            long currentTime = System.nanoTime() / 1000000;
            long totalTime = currentTime - animStartTime;
            if (totalTime > dureeAnimation) {
                animStartTime = currentTime;
            }
            float fraction = (float)totalTime / dureeAnimation;
            fraction = Math.min(1.0f, fraction);
            if (fraction < .5f) {
                translateY = (int)(MAX_Y * (2 * fraction));
            } else {
                translateY = (int)(MAX_Y * (2 * (1 - fraction)));
            }
            repaint();
        }
    }



}



A Voir sur le même Sujet:

  • animer un bouton swing en java
  • créer+un+JLabel+animé
  • animation
  • animations avec des jbutton en java pdf
  • jbutton changer icone dynamiquement
  • mail newtime com br loc:FR
  • jbouton et jtable
  • animée une image de mon JButton:JAVA
  • barre outlook
  • jbutton avec icône à droite et texte à gauche

Leave a Reply

Your email address will not be published. Required fields are marked *