title: How do I run an Applet within Intellij IDEA?
body: <p>I'm trying to run <a href="http://wps.pearsoned.com/ecs_kurose_compnetw_6/216/55463/14198700.cw/index.html" rel="noreferrer">these applets</a> for my networking course. When I tried to run these in the browser from the links they did nothing.  So I decided to try and compile them in IntelliJ but when I ran the code it didn't do anything. No error messages returned. The only thing I did to change the code from the source code was add the main method and remove the package declaration.  The following is the Applet that I was trying to run:</p>
  <h1>JAVA Code</h1>
  <pre><code>///////////////////////////////////////
  //LineSimApllet
  //written by David Grangier, Institut Eurecom, France
  //david.grangier@eurecom.fr
  ///////////////////////////////////////
  //imports
  
  import java.awt.*;
  import java.awt.event.*;
  import java.awt.image.*;
  import java.applet.*;
  import java.util.*;
  
  //Applet Class
  public class LineSimApplet extends Applet {
      //buttons
      Button start = new Button(&quot;Start&quot;);
      Button stop = new Button(&quot;Reset&quot;);
      //features lists
      MyChoice length = new MyChoice(new String[]{&quot;10 km&quot;, &quot;100 km&quot;, &quot;1000 km&quot;}, new double[]{10E3, 100E3, 1E6}, 3);
      MyChoice rate = new MyChoice(new String[]{&quot;512 kps&quot;, &quot;1 Mbps&quot;, &quot;10 Mbps&quot;, &quot;100 Mbps&quot;}, new double[]{512E3, 1E6, 10E6, 100E6}, 2);
      MyChoice size = new MyChoice(new String[]{&quot;100 Bytes&quot;, &quot;500 Bytes&quot;, &quot;1 kBytes&quot;}, new double[]{8E2, 4E3, 8E3}, 1);
      //to simulate time
      Thread timerThread;
      TickTask timerTask;
      boolean simulationRunning = false;
      //communication line
      Line myLine;
  
      public void init() {
          try {
              setBackground(Color.white);
              add(new Label(&quot;Length&quot;, Label.RIGHT));
              add(length);
              add(new Label(&quot;Rate&quot;, Label.RIGHT));
              add(rate);
              add(new Label(&quot;Packet size&quot;, Label.RIGHT));
              add(size);
              //start
              start.addActionListener(
                      new ActionListener() {
                          public void actionPerformed(ActionEvent event) {
                              launchSim();
                          }
                      });
              add(start);
              //stop
              Button stop = new Button(&quot;Reset&quot;);
              stop.addActionListener(
                      new ActionListener() {
                          public void actionPerformed(ActionEvent event) {
                              stopSim();
                              //clear line
                              myLine.sendTime(0);
                              //redraw cleared line
                              LineSimApplet.this.repaint();
                          }
                      });
              add(stop);
              //line
              myLine = new Line(40, 50, 450, 10);
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  
      public void paint(Graphics g) {
          update(g); // eliminate flashing : update is overriden
      }
  
      public void update(Graphics g) { //work on a offscreen image
  
          Dimension offDimension = getSize();
          Image offImage = createImage(offDimension.width, offDimension.height);
          Graphics offGraphics = offImage.getGraphics();
          myLine.drawLine(offGraphics);
  
          //sender
          offGraphics.setColor(Color.blue);
          offGraphics.fillRect(10, 40, 30, 30);
          offGraphics.setColor(Color.black);
          offGraphics.drawString(&quot;Sender&quot;, 5, 90);
          offGraphics.drawRect(10, 40, 30, 30);
  
          //receiver
          offGraphics.setColor(Color.blue);
          offGraphics.fillRect(490, 40, 30, 30);
          offGraphics.setColor(Color.black);
          offGraphics.drawString(&quot;Receiver&quot;, 485, 90);
          offGraphics.drawRect(490, 40, 30, 30);
  
          offGraphics.drawString(&quot;Propagation speed : 2.8 x 10^8 m/sec&quot;, 175, 105);
          //display offscreen image
          g.drawImage(offImage, 0, 0, this);
      }
  
      private void launchSim() {
          setupEnabled(false);
          //setup line
          myLine.setup(length.getVal(), rate.getVal());
          myLine.emitPacket(size.getVal(), 0);
          //setup timer
          timerTask = new TickTask(1E-5, myLine.totalTime());
          timerThread = new Thread(timerTask);
          //start simulation
          simulationRunning = true;
          timerThread.start();
      }
  
      private void stopSim() {
          timerTask.endNow();
          simulationRunning = false;
          setupEnabled(true);
      }
  
      public void setupEnabled(boolean value) {
          start.setEnabled(value);
          length.setEnabled(value);
          rate.setEnabled(value);
          size.setEnabled(value);
      }
  
      //my choice
      class MyChoice extends Choice {
          private double vals[];
  
          public MyChoice(String items[], double values[], int defaultValue) {
              for (int i = 0; i &lt; items.length; i++) {
                  super.addItem(items[i]);
              }
              vals = values;
              select(defaultValue - 1);
          }
  
          public double getVal() {
              return vals[super.getSelectedIndex()];
          }
      }
  
      //tickTask
      class TickTask implements Runnable {
          private double counter;
          private double length;
          private double tick;
  
          public TickTask(double t, double l) {
              length = l;
              tick = t;
              counter = 0;
          }
  
          public void run() {
              while (LineSimApplet.this.simulationRunning) {
                  counter += tick;
                  LineSimApplet.this.myLine.sendTime(counter);
                  LineSimApplet.this.repaint();
                  if (counter &gt;= length) {
                      LineSimApplet.this.myLine.clearPackets();
                      LineSimApplet.this.timerThread.suspend();
                  }
                  try {
                      LineSimApplet.this.timerThread.sleep(50);
                  } catch (Exception e) {
                  }
              }
          }
  
          public void endNow() {
              length = counter;
          }
      }
  }
  
  //Line class
  class Line {
      //graphic variables
      private int gX;
      private int gY;
      private int gWidth;
      private int gHeight;
      //characteristic variables
      final double celerity = 2.8E+8;
      private double length;
      private double rate;
      //simulation variables
      private double time;
      private Packet myPacket;
  
      public Line(int x, int y, int w, int h) {
          //graphic init
          gX = x;
          gY = y;
          gWidth = w;
          gHeight = h;
      }
  
      public void setup(double l, double r) {
          length = l;
          rate = r;
      }
  
      void sendTime(double now) {
          time = now; //update time
          removeReceivedPackets(now);
      }
  
      void emitPacket(double s, double eT) {
          myPacket = new Packet(s, eT);
      }
  
      private void removeReceivedPackets(double now) {
          if (!(myPacket == null)) {
              if (now &gt; myPacket.emissionTime + (myPacket.size / rate) + length * celerity) {
                  clearPackets();
              }
          }
      }
  
      public void clearPackets() {
          myPacket = null;
      }
  
      public double totalTime() {
          double emmissionTime = (myPacket.size / rate);
          double onLineTime = (length / celerity);
          return (emmissionTime + onLineTime);
      }
  
      public void drawLine(Graphics g) {
          g.setColor(Color.white);
          g.fillRect(gX, gY + 1, gWidth, gHeight - 2);
          g.setColor(Color.black);
          g.drawRect(gX, gY, gWidth, gHeight);
          g.setColor(Color.red);
          g.drawString(timeToString(time), gX + gWidth / 2 - 10, gY + gHeight + 15);
          drawPackets(g);
      }
  
      private void drawPackets(Graphics g) {
          if (!(myPacket == null)) {
              double xfirst;
              double xlast;
              //compute time units
              xfirst = time - myPacket.emissionTime;
              xlast = xfirst - (myPacket.size / rate);
              //compute position
              xfirst = xfirst * celerity * gWidth / length;
              xlast = xlast * celerity * gWidth / length;
              if (xlast &lt; 0) {
                  xlast = 0;
              }
              if (xfirst &gt; gWidth) {
                  xfirst = gWidth;
              }
              //draw
              g.setColor(Color.red);
              g.fillRect(gX + (int) (xlast), gY + 1, (int) (xfirst - xlast), gHeight - 2);
          }
      }
  
      static private String timeToString(double now) {
          String res = Double.toString(now * 1000);
          int dot = res.indexOf('.');
          String deci = res.substring(dot + 1) + &quot;000&quot;;
          deci = deci.substring(0, 3);
          String inte = res.substring(0, dot);
          return inte + &quot;.&quot; + deci + &quot; ms&quot;;
      }
  
      public static void main(String[] args) {
          LineSimApplet ls = new LineSimApplet();
          ls.init();
      }
  }
  
  class Packet {
      double size;
      double emissionTime;
  
      Packet(double s, double eT) {
          size = s;
          emissionTime = eT;
      }
  }
  </code></pre>
  <p>How can I run this applet using IntelliJ?</p>