Java 使用Swing定时器延迟任务

Java 使用Swing定时器延迟任务,java,swing,timer,Java,Swing,Timer,我使用Swing定时器将任务延迟一段特定的时间。此时间间隔由用户决定 在我的GUI中,我有一个SpinnerDateModel来接受必须执行任务的时间 SpinnerDateModel date = new SpinnerDateModel(); JSpinner spinner = new JSpinner(date); frame.getContentPane().add(spinner); Date

我使用Swing定时器将任务延迟一段特定的时间。此时间间隔由用户决定

在我的GUI中,我有一个SpinnerDateModel来接受必须执行任务的时间

SpinnerDateModel date = new SpinnerDateModel();
        JSpinner spinner = new JSpinner(date);          
        frame.getContentPane().add(spinner);            
        Date futureDate = date.getDate();
现在,计时器具有参数
Timer(int-delay,ActionListener任务)


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

进行一些检查以防止出现负延迟,例如:

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);
我们应该做到这一点


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

根据这一点,延迟必须是
长的
类型。但是timer只接受
int
然后把long转换成int,我希望你能自己思考一下。答案已编辑。
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);