0

我正在使用 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();

如何将此延迟设置为用户指定的时间?

4

1 回答 1

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

应该做的伎俩。

这将根据从现在到用户选择的(假定的未来)日期的毫秒数计算延迟。

于 2013-05-14T06:26:54.263 回答