Execute a method at a specified time intervalTag(s): Thread


In the following example, we are using a special class, DelayedMethod, which extends the Thread class. This Thread will receive a pointer to the "parent class" in its constructor. This pointer will be used to call a know method at a specified interval.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class AnnoyingPopUps extends Applet implements
    ActionListener {
  Button b1, b2;
  DelayedMethod dm;
  int x = 0;
  
  public void init() {
     b1 = new Button("Start Annoying Popops");
     b2 = new Button("Stop Annoying Popops");
     add(b1); add(b2);
     b1.addActionListener(this);b2.addActionListener(this);
     dm = new DelayedMethod(this, 1000);  // 1 second
     dm.start();
     }
  
  public void actionPerformed(ActionEvent ae) {
     if (ae.getSource() == b1) {
        dm.oktorun = true;
        }
     else if(ae.getSource() == b2) {
        dm.oktorun = false;
       }s
     }

  public void displayPopup() {
    SimplePopUp d = new SimplePopUp();
    d.show();
    d.setLocation(x , x);
    x = x + 5;
    }

  class SimplePopUp extends Dialog  {
    SimplePopUp() {
      super(new Frame(), "annoying popup");
      this.addWindowListener
       (new WindowAdapter() {
           public void windowClosing(WindowEvent e) {
              e.getWindow().dispose();
              }
           }
       );
     }
   }
 
  class DelayedMethod extends Thread {
    AnnoyingPopUps myObj = null;  // customize for your need
    boolean oktorun = false;
    int delay;

    DelayedMethod(AnnoyingPopUps myObj) {
      this.myObj = myObj;
      this.delay = 2000;
      }

    DelayedMethod(AnnoyingPopUps myObj, int delay) {
      this.myObj = myObj;
      this.delay = delay;
      }

    public void run() {
      while (true) {
        try {
          sleep(delay);
          if (oktorun) 
              myObj.displayPopup(); // customize this too!
          } 
        catch (InterruptedException ignored) {}
        }
      }
    }    
}
Want to Try it?

NOTE: Check this How-to to achieve to same goal by using the Timer object.


blog comments powered by Disqus