带线程的java定时器



我使用下面的代码每x次打开一个帧-1,但当我转到另一个帧并返回时,计时器会自行重置,导致第二个帧-1出现这是有问题的,因为我一次只需要1个尝试使用CCD_。

这是代码:

 int timerTimeInMilliSeconds2 = 30000;
    javax.swing.Timer timer2 = new javax.swing.Timer(timerTimeInMilliSeconds2, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            Pop p=new Pop();
            p.setVisible(true);
            new Thread(){
                  @Override
                  public void run() {
                       try {
                              Thread.sleep(5000); // time after which pop up will be disappeared.
                              p.dispose();
                       } catch (InterruptedException e) {
                              e.printStackTrace();
                       }
                  };
            }.start();
        }
    });
    timer2.start();

不要将Pop p对象作为方法内部的局部变量,而是将其作为类的成员。当actionPerformed触发时,检查它是否为null(一个比p更好的名称也是个好主意),并且只在为null时创建窗口。

无论如何,您应该使用另一个Timer,而不是创建一个线程来在5秒钟后处理窗口。

您的问题有点不清楚。正如我所理解的,您需要创建Pop p作为您定义的类的成员变量,而不是方法actionPerformed的局部变量,这样您就可以在触发它之前检查对象是否为null

最新更新