/ / Utiliser Swing Timer pour retarder la tâche - java, swing, timer

Utiliser Swing Timer pour retarder la tâche - java, swing, timer

J'utilise Swing Timer pour retarder ma tâche pour une période de temps spécifique. Cet intervalle de temps est décidé par l'utilisateur.

Dans mon interface graphique, j'ai un SpinnerDateModel pour accepter l'heure à laquelle la tâche doit être effectuée.

SpinnerDateModel date = new SpinnerDateModel();
JSpinner spinner = new JSpinner(date);
frame.getContentPane().add(spinner);
Date futureDate = date.getDate();

Maintenant, le minuteur a des arguments Timer(int delay, ActionListener task)

ActionListener task = new ActionListener(){

@Override
public void actionPerformed(ActionEvent arg0) {

//send function
}

};
Timer timer = new Timer(delay, task);
timer.setRepeats(false);
timer.start();

Comment définir ce délai sur l'heure spécifiée par l'utilisateur?

Réponses:

1 pour la réponse № 1

Avec quelques vérifications pour éviter un délai négatif, quelque chose comme:

delay=Math.max(0,futureDate.getTime()-System.currentTimeMillis());
delay=Math.min(delay,Integer.MAX_VALUE);
// or:
//   if(delay>Integer.MAX_VALUE) { throw new exception-of-some-sort }
Timer timer=new Timer((int)delay,task);

devrait faire le tour.

Cela calculera le délai en fonction du nombre de millisecondes à compter de la date présumée future sélectionnée par l'utilisateur.