// this is the shell template.
// PROGRAM COMMENTS FOLLOW
// THIS SHELL ACTUALLY COMPILES AND RUNS.
// BUILD ON IT, MAKING BACKUP COPIES AS YOU PROGRAM.

// CIS  790          L.A.T.T.C              PROF. AUCIELLO
// Programmed by Joseph Auciello, CIS Professor, LA Trade Technical College.
// astr2jav.html


/*      [STARTS BLOCK COMMENT]
        [MORE COMMENTS GO HERE]
	Topics:
		1.	declaring an indexable string.
		2.	'str.length()' = length function.
		3.	'str.charAt'   = substring pointer.
		4.	'str.substring(11,17)' returns
                         "winter"

*/      //  ENDS BLOCK COMMENT
// ...............................................................

// LINKS TO LIBRARIES FOLLOW  [IF NOT SURE, USE ALL THE LINKS.]
import corejava.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.Font;
import java.awt.Color;
import java.lang.String;
import java.net.*;
import java.util.*;
// ...............................................................


// MAIN BODY OF PROGRAM STARTS
//      PROGRAM APPLET IS NAMED (astr2)
public class astr2 extends Applet

// DEFINE TEXT INPUT FIELDS, BUTTONS, integers (ALL GLOBAL VARIABLES)
{  TextField inputField1, inputField2, inputField3, inputField4, inputField5;
   Button button1;                           // ...... button.
   int i = 1;

// START() PROCEDURE RUNS INITIALLY.
//         SET UP INPUT FIELDS.
   public void start()
     { Label namelabel1 = new Label("Enter String s1:",Label.RIGHT);
       add (namelabel1);                     // def and add label.
       inputField1      = new TextField(16); // create, add, and
       add (inputField1);                    // initialize input field1.
       inputField1.setText("ABC's of Strings");

       Label namelabel2 = new Label("Index position:",Label.RIGHT);
       add (namelabel2);                     // def and add label.
       inputField2      = new TextField(4);  // create, add, and
       add (inputField2);                    // initialize input field1.
       inputField2.setText("0");

//     ......................

//     SET UP BUTTON
       button1          = new Button("Click Here");  // def button.
       add(button1);
     } // end init()
//   ..............................................................


// IN AN APPLET PROGRAM, 'PAINT' IS THE MAIN PROCEDURE.
   public void paint(Graphics g)
//   SET UP FONTS, COLORS, INITIAL ACTIONS.
     { Font fonts1   = new Font("Helvetica",Font.BOLD,16);
       g.setFont(fonts1);
       g.setColor(new Color(255,25,245));  // base color
       g.drawString("A  STRING  IS  AN  ADDRESSABLE ARRAY SET  OF  CHARACTERS.",10,226);


//    TRY [block of code] CATCH [error processing block of code]
//    FORM THE 'GUTS' OF THE MAIN 'PAINT' PROCEDURE.


//     THESE STATEMENTS READ FROM THE TEXT INPUT FIELDS
//     AND CONVERT TO STRING OR INTEGERS OR CHARS AS NECESSARY.
//     VARIABLES DEFINED WITHIN THIS PROCEDURE ARE LOCAL
//     TO THIS PROCEDURE, OF COURSE.

       try
          { String s1    = inputField1.getText();
            int l1       = s1.length();
            String s2    = inputField2.getText();
            int int1     = Integer.parseInt(s2);

//          THESE ARE OUTPUT STATEMENTS.
//          NOTE '+' OPERATOR.
            g.drawString("String s1 = " + s1,20,74);
            g.drawString("s1.length() = " + l1, 20,88);
            g.drawString("s1.charAt(" + int1 + ") = " + s1.charAt(int1), 20,102);
            g.drawString("s1.toUpperCase() = " + s1.toUpperCase(),20,144);
            g.drawString("s1.toLowerCase() = " + s1.toLowerCase(),20,158);
          }

//     ERROR-TRAPPING FOLLOWS.
       catch (Exception e)                                    
          { String err = e.toString();
            g.drawString("In Error-Trapping Routine. ",20,265);
            g.drawString("" + err,20,277);
          } // catch
     }  // end paint()
//   ..............................................................


//  PRESSING THE 'ENTER' KEY OR CLICKING 'ENTER' IS
//  CAPTURED AS AN EVENT BY THIS ROUTINE.
//  THIS ROUTINE ALLOWS PROCESSING TO CONTINUE WHEN
//  EITHER  IS PUSHED OR THE BUTTON IS CLICKED.
    public boolean action(Event event, Object arg)
     {   repaint();
         return true;
     }  
}  // end class

//  ===================== END   OF   PROGRAM  ===========================

FOLLOWING IS THE HTML THAT RUNS THIS APPLET.
FIRST, YOU MUST COMPILE WITH 'JAVAC' AND CREATE
A .CLASS OBJECT.  THIS OBJECT IS INSERTED INTO 
THE HTML (SEE BELOW), AND RUN AS A LOCAL FILE
BY A BROWSER (NETSCAPE OR EXPLORER).




<HTML>
<BODY>
<APPLET code="astr1.class" HEIGHT=300 WIDTH=620>
</APPLET>
</BODY>
</HTML>