|  | First example: Simple input and output
 Purpose: Display an input form where the user enters a number (long). If an illegal character is typed, a warning beep is emitted and the character is erased. When the OK button is hit, the prime factors are calculated and displayed on an output form. When the OK button is hit there, the input dialog is shown again until the Exit button is hit.  
			// InOutGidlet.javaimport ch.aplu.gidlet.*;
 
 public class InOutGidlet extends Gidlet
 {
 public void main()
 {
 while (true)
 {
 long n = readLong("Enter a number:");
 showMessage(n + " = " + getPrimeFactors(n, ""));
 }
 }
 
 private String getPrimeFactors(long n, String result)
 {
 long divisor = primeFactor(n);
 if (divisor == 0)
 return result + n;
 return getPrimeFactors(n / divisor, result + divisor + " x ");
 }
 
 private long primeFactor(long n)
 {
 for (long i = 2; i * i <= n; i++)
 if (n % i == 0)
 return i;
 return 0;  // n is prime
 }
 }
 
  
        Execute  InOutGidlet 
        (if you have the Sun's Wireless Toolkit (WTK) 
        installed and the JAD extension registered. Learn 
         how to register the JAD extension) Discussion: 
         A simple non-optimized recursive algorithm is used. For a given 
        number n the method primeFactor() determines the first integer divisor 
        d by trying to divide from 2 to the square root of n. The process is repeated 
        for n / d until this is a prime number. Each time a divisor is found, 
        it is appended to a result string (not very efficient, but simple).    Second example: Output in a console window  Purpose: Demonstrate that the sequence a(n) = (1 + 1/n)^n approaches e by writing a(n) for n = 1..100 in a console display.  
        
          | // LimitGidlet.java 
 import ch.aplu.gidlet.*;
 
 public class LimitGidlet extends Gidlet
 {
 public void main()
 {
 MConsole c = new MConsole();
 int n = 1;
 while (true)
 {
 c.print("a(" +  n + ") = ");
 c.println(a(n));
 waitOk();
 n++;
 }
 }
 
 private double a(double n)
 {
 return Float11.pow(1+1/n, n);
 }
 }
 
 |  |  Execute  
        LimitGidlet (if you have the Sun's Wireless Toolkit (WTK) 
        installed and the JAD extension registered. Learn 
         how to register the JAD extension) Discussion: We use the static Float11 method pow(x, y) to calculate x^y. In order to observe the convergence smoothly, the program is executed step-by-step by clicking the OK button. Even during the running program, the cursor up/down/left/right buttons may be used to scroll the display in the four directions.    Third example: Graphics with MPanel   Purpose: Same as example 2, but apply the proverb A Picture Worth A Thousand Words (numbers). 
        
          | // GraphLimitGidlet.java
 import ch.aplu.gidlet.*;
 
 public class GraphLimitGidlet extends Gidlet
 {
 private MPanel p = new MPanel();
 private String oldLabel = "";
 
 public void main()
 {
 p.window(0, 50, 0, 3);
 p.rectangle(0, 0, 50, 3);
 
 for (int n = 1; n <= 50; n++)
 {
 show(n, a(n));
 if (n == 1)
 p.move(n, a(n));
 else
 p.draw(n, a(n));
 
 waitOk();
 }
 p.color(RED);
 p.line(0, Math.E, 50, Math.E);
 }
 
 private double a(double n)
 {
 return Float11.pow(1 + 1/n, n);
 }
 |  |  
        
          |   private void show(int n, double a){
 String newLabel = "  a(" + n + ") = " + a;
 p.color(WHITE);
 p.label(oldLabel, 3.5); // Erase
 p.color(BLACK);
 p.label(newLabel, 3.5); // Draw
 oldLabel = newLabel;
 }
 }
 
 |  Execute  
        GraphLimitGidlet (if you have the Sun's Wireless Toolkit (WTK) 
        installed and the JAD extension registered. Learn 
         how to register the JAD extension) Discussion: We use the MPanel class and are happy to forget all about device dependant pixel coordinates by defining an application specific coordinate system. Drawing text into a graphics windows is somewhat cumbersome, because we must erase the old text by painting it in white color.  |  |