Faire clignoter un bouton avec un timer swing

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

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.