IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Timer - Utilisation dans un actionPerformed


Sujet :

AWT/Swing Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Timer - Utilisation dans un actionPerformed
    Bonjour,

    J'aimerais utiliser un Timer dans un actionPerformed tel que lorsqu'on appuie sur un bouton, toutes les deux secondes une image dans la fenêtre soit mise à jour jusqu'à avoir fait défiler toutes les images ou avoir appuyé sur un autre bouton (je n'ai pas encore fait cette dernière option), mais je n'arrive pas à le faire (j'ai testé de plusieurs façons qui plantent parfois..). Dans la version ci-dessous, ça met directement à la dernière image et après ça lance le timer avec la mise à jour de la JProgressBar, donc on dirait que le while est prioritaire sur le t.start() o.O. Je précise que je n'ai jamais utilisé de Timer donc je n'ai peut-être pas compris le principe ^^.
    Le code, plus explicite (cf. le gras), ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import java.awt.event.*;
    import javax.swing.Timer;
    import javax.swing.event.*;
    
    public class ControlButton implements ActionListener {
    
    	// Attributes 
    	public Model model;
    	public Fenetre fenetre;
    	Timer t;
    
    	// Constructor
    	public ControlButton(Model m, Fenetre f) {
    		model = m;
    		fenetre = f;
    		fenetre.setButtonControler(this);
    	}
    	
    	// Methods
    	public void actionPerformed (ActionEvent e) {
    		if (e.getSource()==fenetre.buttonv2[0]) {
    			// First
    			model.setIndiceVue2(0);
    			fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]);
    			fenetre.progressbarv2.setValue(100/model.getNombre_images());
    		}	
    		else if (e.getSource()==fenetre.buttonv2[1]) {
    			// Previous
    			if (model.getIndiceVue2() > 0) {
    				model.setIndiceVue2(model.getIndiceVue2()-1);
    				fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]);
    				fenetre.progressbarv2.setValue(fenetre.progressbarv2.getValue()-100/model.getNombre_images());
    			}
    		}
    		else if (e.getSource()==fenetre.buttonv2[2]) {
    			// Play
    			initTimer();
    			while (model.getIndiceVue2() < model.getNombre_images()) {
    			   	model.setIndiceVue2(model.getIndiceVue2()+1);
    				fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]);
    				t.start();
    			}
    		}
    		else if (e.getSource()==fenetre.buttonv2[3]) {
    			// Next
    			if (model.getIndiceVue2() < model.getNombre_images()) {
    				model.setIndiceVue2(model.getIndiceVue2()+1);
    				fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]);
    				fenetre.progressbarv2.setValue(fenetre.progressbarv2.getValue()+100/model.getNombre_images());
    			}
    		}
    		else if (e.getSource()==fenetre.buttonv2[4]) {
    			// Last
    			model.setIndiceVue2((model.getNombre_images())-1);
    			fenetre.setLimagev2(model.getTableauImages()[model.getIndiceVue2()]);
    			fenetre.progressbarv2.setValue(100);
    		}	
    	}
    	
    	public void initTimer() {
    	 t=new Timer(1000,new ActionListener() {
    		   public void actionPerformed(ActionEvent e) {
    				   if (fenetre.progressbarv2.getValue() < 100) {
    					   fenetre.progressbarv2.setValue(fenetre.progressbarv2.getValue()+100/model.getNombre_images());
    				   } else {
    					   t.stop();
    				   }
    		   }
    	 });
    	}
    }
    Merci !
    Dernière modification par Invité ; 25/05/2014 à 22h46.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer variables d'1 <form> et les utiliser dans X
    Par honeyz dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/04/2006, 11h39
  2. erreur d'un timer declaré dans un thread
    Par hak5 dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/04/2004, 09h20
  3. VCL de Crystal Report pour utilisation dans C++Builder
    Par dibak dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/02/2004, 17h04
  4. caractère générique utilisable dans strcmp
    Par barthelv dans le forum C
    Réponses: 9
    Dernier message: 01/08/2003, 16h54
  5. Réponses: 7
    Dernier message: 26/06/2003, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo