/ / Używanie Swing Timer do opóźnienia zadania - java, swing, timer

Używanie Swing Timer do opóźnienia zadania - java, swing, timer

Używam Swing Timer, aby opóźnić moje zadanie na określony czas. O tym interwale czasowym decyduje użytkownik.

W moim GUI, mam SpinnerDateModel, aby zaakceptować czas, w którym zadanie musi zostać wykonane.

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

Teraz Timer ma argumenty 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();

Jak ustawić to opóźnienie na czas określony przez użytkownika?

Odpowiedzi:

1 dla odpowiedzi № 1

Niektóre kontrole zapobiegają negatywnym opóźnieniom, na przykład:

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);

powinien zrobić lewy.

Spowoduje to obliczenie opóźnienia na podstawie liczby milisekund od teraz aż do (zakładanej przyszłości) daty wybranej przez użytkownika.