Lecture # The Applet Class: Concept #1
Lecture # The Applet Class: Concept #1
Lecture # The Applet Class: Concept #1
Concept #1
Introduction
The Applet class is contained in the java.applet package.
Applet has several methods to control the execution of your applet.
There are three interfaces:
o AppletContext
o AudioClip
o AppletStub
Concept #2
Two Types of Applets
There are two varieties of applets:
o Based directly on the applet class. These applets use the Abstract Window Toolkit
(AWT) to provide the GUI.
o Based on Swing class JApplet. These applets uses Swing classes to provide GUI
JApplet inherits Applet, all the features of Applet are also available in JApplet.
Concept #3
Applet Basics
All applets are subclasses of Applet.
Applets are not stand-alone programs, they run along with a web browser or an applet
viewer.
Execution of an applet does not begin at main().
Output is not given by System.out.println() but instead use methods such as drawString()
which outputs a string to a specified X,Y location.
To view and test an applet, include the following comment at the head of the Java source
code file that contains the APPLET tag.
Format:
/*
<applet code="MyApplet" width=200 height=60>
</applet>
*/
This comments contains an APPLET tag that will run an applet called MyApplet in a
window that is 200 pixels wide and 60 pixels high.
Concept #4
The Applet Class
Applets provides:
o Starting and stopping
o Methods to load and display images
o Methods to load and play audio clips
Applet extends the AWT class Panel.
In turn Panel extends Container which contains component
Applet provides all of the necessary support for window based activities.
Following are the few methods supported by Applet class
void destroy() Called by the browser just
before an applet is
terminated. Then the applet
program will override this
method to perform any
cleanup prior to its
destruction.
URL getCodeBase() Returns the URL associated
with the invoking applet
URL getDocumentBase() Returns the URL of the
HTML document that
invokes the applet.
Image getImage(URL url) Returns an image object that
encapsulates the image found at the
location url.
String getParameter(String Returns the parameter
paramName) associated with paramName.
null is returned if the specified
parameter is not found
void init( ) Called when an applet begins
execution. It is the first method called
for any applet.
Concept #5
Applet Architecture
An applet is a window based program.
Few concepts on applet:
o Applets are even driven
An applet resembles a set of interrupt service routines.
An applet waits until an event occurs. The run-time system notifies the
applet about an event by calling an event handler that has been provided
by the applet.
Once this happens, the applet must take appropriate action and then
quickly return.
It must perform specific actions in response to events and then return
control to the run-time system.
o Users initiates the interaction with the applet
The user interacts with the applet as or when the user wants to.
These interactions are sent to the applet as events to which the applet must
respond. For example, when the user clicks the mouse inside the applet’s
window, a mouse-clicked event is generated. If the user presses a key while
the applet’s window has input focus, a keypress event is generated.
When the user interacts with one of these controls such as push buttons and
check boxes an event is generated.
Concept #6
An Applet Skelton
There are four methods in applet:
o init()
o start()
o stop()
o destroy()
Default implementations for all of these methods are provided.
Applets do not need to override those methods they do not use.
AWT-based applets will also override the paint( ) method, which is defined by the AWT
Component class. This method is called when the applet’s output must be redisplayed.
The skeleton of the applet is as shown below:
import java.awt.*;
import java.applet.*;
/*
<applet code="AppletSkel" width=300 height=100>
</applet>
*/
public class AppletSkel extends Applet
{
public void init()
{
//initialization
}
public void start()
{
// start or resume execution
}
public void stop()
{
// suspends execution
}
public void destroy()
{
// perform shutdown activities
}
public void paint(Graphics g)
{
// redisplay contents of window
}
}
Function start() is called immediately after the init() is called and also whenever the applet
is restarted.
Stop() is called when the applet is stopped.
destroy() is called when the applet is terminated and it is the last method executed.
paint() is called when the applet window must be restored.
The skeleton will not perform anything but it will compile and run, when it is executed and
displays an applet viewer:
Applet Initialization and Termination
When an applet begins, the following methods are called, in this sequence:
1) init()
2) start()
3) paint()
When an applet is terminated the following methods are called in sequence:
1) stop()
2) destroy()
init( )
The init( ) method is the first method to be called. This is where we initialize variables.
This method is called only once during the run time of your applet.
start( )
The start( ) method is called after init( ). It is also called to restart an applet after it has been
stopped. Whereas init ( ) is called once , (when the first time an applet is loaded), the
function start( ) is called.
Each time an applet’s HTML document is displayed onscreen. So, if a user leaves a web
page and comes back, the applet resumes execution at start( ).
paint( )
The paint( ) method is called each time your applet’s output must be redrawn. This situation
can occur for several reasons.
o For example, the window in which the applet is running may be overwritten by
another window and then uncovered.
o Or the applet window may be minimized and then restored.
paint( ) is also called when the applet begins execution.
Whatever the cause, whenever the applet must redraw its output, paint( ) is called. The
paint( ) method has one parameter of type Graphics. This parameter will contain the
graphics context, which describes the graphics environment in which the applet is running.
This context is used whenever output to the applet is required.
stop( )
The stop( ) method is called when a web browser leaves the HTML document containing
the applet
o For example, when it goes to another page.
When stop( ) is called, the applet is probably running.
You should use stop( ) to suspend threads that don’t need to run when the applet is not
visible. You can restart them when start( ) is called if the user returns to the page.
destroy( )
Is called when the environment determines that your applet needs to be removed
completely from memory.
At this point, you should free up any resources the applet may be using.
The stop( ) method is always called before destroy( ).
Overriding update( )
In some situations, your applet may need to override another method defined by the AWT,
called update( ).
This method is called when your applet has requested that a portion of its window be
redrawn. The default version of update( ) simply calls paint( ).
However, you can override the update( ) method so that it performs more subtle repainting.
Concept #7
Simple Applet Display Methods
Applets are displayed in a window, and AWT-based applets use the AWT to perform input
and output.
Methods used are:
o drawString()
member of graphics class
called from within update() or paint()
Syntax:
void drawString(String message, int x, int y)
message is the string to be output beginning at x, y (The upper left corner
starts at x=0, y=0)
Will not recognize newlines. For giving newlines it should be mentioned
with the values of x and y
o setBackground() – to set the background color of the applet window
void setBackground(Color newColor)
o setForeground() – to set the foreground color that is the color of the text written
void setForeground(Color newColor)
newColor specifies the new color. Example setBackground(Color.green)
o Color getBackground() – returns the color of the background
o Color getForeground() – returns the color of the foreground
.Example:
import java.awt.*;
import java.applet.*;
/*
<applet code="Sample" width=300 height=50>
</applet>
*/
public class Sample extends Applet
{
String msg;
public void init()
{
setBackground(Color.cyan);
setForeground(Color.red);
msg = "Inside init( ) --";
}
public void start()
{
msg += " Inside start( ) --";
}
public void paint(Graphics g)
{
msg += " Inside paint( ).";
g.drawString(msg, 10, 30);
}
}
Output:
Concept #8
Request Repainting
Whenever your applet needs to update the information displayed in its window, it simply
calls repaint( ).
It causes the AWT run-time system to execute a call to your applet’s update( ) method,
which, in its default implementation, calls paint( ).
For example, if part of your applet needs to output a string, it can store this string in String
variable and then call repaint ( ). Inside paint ( ), you will output the string using
drawString ().
Four ways in which repaint() can be called:
o void repaint() – entire window is repainted
o void repaint(int left, int top, int width, int height) – left and top gives the upper left
corner of the region with the specified height and width in pixels.
o void repaint(long maxDelay) – maxdelay specifies the maximum number of
milliseconds that can elapse before update() is called. If the system is busy or slow
update() may not be called immedeatly.Mutliple request for repainting may get
collapsed. Repaint with this parameter is used usually when animation programs
are used, in which a constant update time is required.
o void repaint(long maxDelay, int x, int y, int width, int height)
Concept #9
Using the Status Window
An applet can also output a message to the status window of the browser or applet viewer
on which it is running.
To do so, call showStatus( ) with the string that you want displayed.
The status window is a good place to
o Give the user feedback about what is occurring in the applet,
o Suggest options
o Possibly report some types of errors.
The status window also makes an excellent debugging aid, because it gives you an easy
way to output information about your applet.
Example:
import java.awt.*;
import java.applet.*;
/*
<applet code="StatusWindow" width=300 height=50>
</applet>
*/
public class StatusWindow extends Applet
{
public void init()
{
setBackground(Color.cyan);
}
public void paint(Graphics g)
{
g.drawString("This is in the applet window.", 10, 20);
showStatus("This is shown in the status window.");
}
}
Output:
Concept #10
The HTML Applet Tag
APPLET tag be used to start an applet from both an HTML document and from an applet
viewer.
An applet viewer will execute each APPLET tag that it finds in a separate window, while
web browsers will allow many applets on a single page.
Syntax:
< APPLET
[CODEBASE = codebaseURL]
CODE = appletFile
[ALT = alternateText]
[NAME = appletInstanceName]
WIDTH = pixels HEIGHT = pixels
[ALIGN = alignment]
[VSPACE = pixels] [HSPACE = pixels]
>
[< PARAM NAME = AttributeName VALUE = AttributeValue>]
[< PARAM NAME = AttributeName2 VALUE = AttributeValue>]
...
[HTML Displayed in the absence of Java]
</APPLET>
1) CODEBASE:
Is an optional attribute that specifies the base URL of the applet code, which is the
directory that will be searched for the applet’s executable class file which is
specified by the CODE tag.
The HTML document’s URL directory is used as the CODEBASE if this attribute
is not specified.
2) CODE:
Is a required attribute that gives the name of the file containing your applet’s
compiled .class file.
This file is relative to the code base URL of the applet, which is the directory that
the HTML file was in or the directory indicated by CODEBASE if set.
3) ALT:
The ALT tag is an optional attribute used to specify a short text message that should
be displayed if the browser recognizes the APPLET tag but can’t currently run Java
applets.
4) NAME:
NAME is an optional attribute used to specify a name for the applet instance.
Applets must be named in order for other applets on the same page to find them by
name and communicate with them.
To obtain an applet by name, use getApplet( ), which is defined by the
AppletContext interface.
Required attributes that give the size (in pixels) of the applet display area.
6) ALIGN:
Concept #11
Passing Parameters to Applets
The APPLET tag in HTML allows you to pass parameters to your applet.
To retrieve a parameter, use the getParameter( ) method. It returns the value of the specified
parameter in the form of a String object.
Thus, for numeric and boolean values, you will need to convert their string representations
into their internal formats.
Example:
import java.awt.*;
import java.applet.*;
/*
<applet code="ParamDemo" width=300 height=80>
<param name=fontName value=Courier>
<param name=fontSize value=14>
<param name=leading value=2>
<param name=accountEnabled value=true>
</applet>
*/
public class ParamDemo extends Applet
{
String fontName;
int fontSize;
float leading;
boolean active;
public void start()
{
String param;
fontName = getParameter("fontName");
if(fontName == null)
fontName = "Not Found";
param = getParameter("fontSize");
try
{
if(param != null)
fontSize = Integer.parseInt(param);
else
fontSize = 0;
}
catch(NumberFormatException e)
{
fontSize = -1;
}
param = getParameter("leading");
try
{
if(param != null)
leading = Float.valueOf(param).floatValue();
else
leading = 0;
}
catch(NumberFormatException e)
{
leading = -1;
}
param = getParameter("accountEnabled");
if(param != null)
active = Boolean.valueOf(param).booleanValue();
}
public void paint(Graphics g)
{
g.drawString("Font name: " + fontName, 0, 10);
g.drawString("Font size: " + fontSize, 0, 26);
g.drawString("Leading: " + leading, 0, 42);
g.drawString("Account Active: " + active, 0, 58);
}
}
Output:
Concept #12
getDocumentBase() and getCodeBase()
Java will allow the applet to load data from
o the directory holding the HTML file that started the applet (the document
base)and
o the directory from which the applet’s class file was loaded (the code base).
These directories are returned as URL objects by the functions
o getDocumentBase( ) and
o getCodeBase( ).
They can be concatenated with a string that names the file you want to load.
Example:
import java.awt.*;
import java.applet.*;
import java.net.*;
/*
<applet code="Bases" width=300 height=50>
</applet>
*/
public class Bases extends Applet
{
public void paint(Graphics g)
{
String msg;
URL url = getCodeBase();
msg = "Code base: " + url.toString();
g.drawString(msg, 10, 20);
url = getDocumentBase();
msg = "Document base: " + url.toString();
g.drawString(msg, 10, 40);
}
}
Concept #13
AppletContext and showDocument()
Used for providing active images and animations to provide a graphical means of
navigating the Web.
showDocument()
o is used to allow the applets to transfer control to another URL.
o Within an applet, once you have obtained the applet’s context, you can bring
another document into view.
o There are two types:
showDocument(URL) - displays the document at the specified URL.
showDocument(URL, String) - displays the specified document at the
specified(_top, _blank, _self, _parent)
location within the browser window.
AppletContext is an interface that lets you get information from the applets execution
environment.
The methods which comes under AppletContext interface is:
o showStatus(String str)
o showDocument(URL url)
o getApplet(String appletName)
Example:
import java.awt.*;
import java.applet.*;
import java.net.*;
/*
<applet code="ACDemo" width=300 height=50>
</applet>
*/
public class ACDemo extends Applet
{
public void start()
{
AppletContext ac = getAppletContext();
URL url = getCodeBase();
try
{
ac.showDocument(new URL(url+"Test.html"));
}
catch(MalformedURLException e)
{
showStatus("URL not found");
}
}
}
Explanation:
It obtains the current applet context and uses that context to transfer
control to a file called test.html
This file must be in the same directory as the applet.
Concept #14
The AudioClip Interface
Defines the methods:
o play() – play a clip from the beginning
o stop() – stop playing the clip
o loop() - play the loop continuously
o getAudioClip() - to play the audio clip which is loaded
Concept #15
The AppletStub Interface
provides the means by which the applet and the browser communicate.