J'essaie la minuterie start-stop via la même touche J. Laisse-moi partager mon code.Minuterie Start-Stop via le même bouton
Bouton Action;
private void ButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(Button.getText().equals("START")){
Button.setText("STOP");
Spinner.setEnabled(false);
Informer.setBackground(Color.green);
Informer.setText("Running");
Timer time = new Timer();
ScheduledTask st = new ScheduledTask();
time.schedule(st, 0, (int) Spinner.getValue()*1000*60);
}
else{
Button.setText("START");
Spinner.setEnabled(true);
Informer.setBackground(Color.red);
Informer.setText("Stopped");
}
}
Lorsque l'utilisateur appuie sur le bouton; Nom de la touche a changé ARRÊT de START nommé informateur peinture textfield au vert et à écrire dans la course, et ci-dessous minuterie a commencé,
public class ScheduledTask extends TimerTask {
public void run() {
if (Button.getText().equals("STOP")){
Worker1 worker1 = new Worker1();
worker1.execute();
}
else{
ScheduledTask.this.cancel();
}
}
}
Comme vous pouvez le voir exécuter une minuterie SwingWorker worker1 nommé. Si j'appuie à nouveau sur le bouton (appelé STOP), le bouton j est renommé sur START et la minuterie ne voit pas STOP dans le texte du bouton. Imaginez la configuration de la minuterie 1 min et appuyez sur le bouton START. Lorsque le bouton START est pressé, le worker1 est exécuté immédiatement et le compte à rebours commence, vous savez. En 20-30 secondes, appuyez sur le bouton STOP et attendez 5-10 secondes. Appuyez à nouveau sur le bouton START. Le problème est ici 2 minuterie déjà en cours maintenant. Lorsque le compte à rebours de la première minuterie est terminé, worker1 est exécuté. 5-10 secondes plus tard, la minuterie finit le compte à rebours et recommence le travail1. Comment puis-je arrêter le compte à rebours de la minuterie en cours lorsque le même bouton est enfoncé si un compte à rebours est déjà actif?
N'utilisez pas de 'TimerTask' ici. Au lieu de cela, implémentez un «temporisateur» Swing pour les tâches répétitives ou un «SwingWorker» pour les tâches longues. Voir [Concurrency in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/) pour plus de détails. –
Pour une meilleure aide plus tôt, postez un [MCVE] (http://stackoverflow.com/help/mcve) (Exemple minimal et vérifiable minimal). –