Faire clignoter un bouton avec un timer swing

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 061 fois - Téléchargée 18 fois

Contenu du snippet

Dans la catégorie sassèrarien, ce programme fait clignoter un bouton...

Source / Exemple :


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

public class ButtonBlinker extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton startButton = null;
	private JButton pauseButton = null;
	private JButton stopButton = null;

	private static int blinkInterval = 200; // milliseconds
	private enum Status { STOPPED, RUNNING, PAUSED };
	private Status status = Status.STOPPED;
	private boolean blink = false; 
	private Color pauseColor; 
	private Timer pauseTimer; 
	

	/**

  • This is the default constructor
  • /
public ButtonBlinker(){ super(); initialize(); } /**
  • This method initializes this
  • @return void
  • /
private void initialize(){ this.setSize(291, 103); this.setTitle("Button Blinker"); this.setContentPane(getJContentPane()); pauseColor = pauseButton.getForeground(); updateCommandButtons(status = Status.STOPPED); } /**
  • This method initializes jContentPane
  • @return javax.swing.JPanel
  • /
private JPanel getJContentPane(){ if(jContentPane==null){ jContentPane=new JPanel(); jContentPane.setLayout(new FlowLayout()); jContentPane.add(getStartButton(), null); jContentPane.add(getPauseButton(), null); jContentPane.add(getStopButton(), null); } return jContentPane; } /**
  • This method initializes startButton
  • @return javax.swing.JButton
  • /
private JButton getStartButton(){ if(startButton==null){ startButton=new JButton(); startButton.setText("start"); startButton.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent e){ startButtonActionPerformed(e); } }); } return startButton; } /**
  • This method initializes pauseButton
  • @return javax.swing.JButton
  • /
private JButton getPauseButton(){ if(pauseButton==null){ pauseButton=new JButton(); pauseButton.setText("pause"); pauseButton.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent e){ pauseButtonActionPerformed(e); } }); } return pauseButton; } /**
  • This method initializes stopButton
  • @return javax.swing.JButton
  • /
private JButton getStopButton(){ if(stopButton==null){ stopButton=new JButton(); stopButton.setText("stop"); stopButton.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent e){ stopButtonActionPerformed(e); } }); } return stopButton; } private void stopTimer(Timer timer) { if (timer != null) timer.stop(); timer = null; } private void startButtonActionPerformed(java.awt.event.ActionEvent evt) { updateCommandButtons(status = Status.RUNNING); } private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) { updateCommandButtons(switchSuspended()); // setup or stop blinker if (status == Status.PAUSED) { (pauseTimer = new Timer(blinkInterval, new ActionListener() { public void actionPerformed(ActionEvent evt) { pauseButton.setForeground((blink = !blink) ? pauseColor : Color.RED); }})).start(); } else { stopTimer(pauseTimer); } } private void stopButtonActionPerformed(java.awt.event.ActionEvent evt) { updateCommandButtons(status = Status.STOPPED); stopTimer(pauseTimer); } private Status switchSuspended() { return status = (status == Status.RUNNING ? Status.PAUSED : Status.RUNNING); } public void updateCommandButtons(Status status) { switch (status) { case RUNNING: startButton.setEnabled(false); pauseButton.setEnabled(true); stopButton.setEnabled(true); pauseButton.setForeground(pauseColor); System.out.println("started"); break; case PAUSED: startButton.setEnabled(false); pauseButton.setEnabled(true); stopButton.setEnabled(true); System.out.println("paused"); break; case STOPPED: startButton.setEnabled(true); pauseButton.setEnabled(false); stopButton.setEnabled(false); System.out.println("stopped"); break; } } public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ ButtonBlinker thisClass=new ButtonBlinker(); thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); thisClass.setVisible(true); } }); } }

A voir également

Ajouter un commentaire Commentaires
Messages postés
94
Date d'inscription
dimanche 30 avril 2006
Statut
Membre
Dernière intervention
21 juin 2010

bonjour à tous, pour moi je veux utiliser la classe timer pour contrôler l'exécution d'un ensemble de taches. telque à la terminaison de la tache1 je dois déclancher la tache 2 en controlant la fin du temps d'exécution de la tache1 mais avec un temps réel(horloge)
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
13
jdk 5.0 minimum pour avoir les enum
Messages postés
16
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
15 mars 2009

Voila ce qu'il se passe lors de la compile :
javac ButtonBlinker.java
ButtonBlinker.java:22: ';' expected
private enum Status { STOPPED, RUNNING, PAUSED };
^
ButtonBlinker.java:22: cannot resolve symbol
symbol : class enum
location: class ButtonBlinker
private enum Status { STOPPED, RUNNING, PAUSED };
^
ButtonBlinker.java:23: cannot resolve symbol
symbol : class Status
location: class ButtonBlinker
private Status status = Status.STOPPED;
^
ButtonBlinker.java:139: cannot resolve symbol
symbol : class Status
location: class ButtonBlinker
private Status switchSuspended()
^
ButtonBlinker.java:143: cannot resolve symbol
symbol : class Status
location: class ButtonBlinker
public void updateCommandButtons(Status status)
^
ButtonBlinker.java:147: cannot resolve symbol
symbol : variable RUNNING
location: class ButtonBlinker
case RUNNING: startButton.setEnabled(false);
^
ButtonBlinker.java:153: cannot resolve symbol
symbol : variable PAUSED
location: class ButtonBlinker
case PAUSED: startButton.setEnabled(false);
^
ButtonBlinker.java:158: cannot resolve symbol
symbol : variable STOPPED
location: class ButtonBlinker
case STOPPED: startButton.setEnabled(true);
^
8 errors

et je crois qu'effectivement je n'ai pas le bon jdk.

Merci tout de meme !
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
13
Désolé, je ne comprend pas ta question. Si tu lis en haut de la page, tu trouves :

private enum Status { STOPPED, RUNNING, PAUSED };
private Status status = Status.STOPPED;

pour les enum il faut un jdk version quelquechose minimum, je ne sais plus, mais avec la toute dernière version tu devrais pouvoir les utiliser.
Messages postés
16
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
15 mars 2009

Bonjour,


Mais ou sont passees les classes enum et Status ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.