我正在使用Swing Timer将我的任务延迟一段特定的时间。该时间间隔由用户决定。
在我的GUI中,我有一个SpinnerDateModel来接受必须执行任务的时间。
SpinnerDateModel date = new SpinnerDateModel();
JSpinner spinner = new JSpinner(date);
frame.getContentPane().add(spinner);
Date futureDate = date.getDate();
现在,Timer有参数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();
如何将此延迟设置为用户指定的时间?
答案 0 :(得分:1)
通过一些检查来防止负面延迟,例如:
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);
应该这样做。
这将根据从现在到用户选择的(假定的未来)日期的毫秒数来计算延迟。