Unit VI: The Applet Class
Unit VI: The Applet Class
VI: The Applet Class
An applet is a Java program that runs in a Web browser. An applet can be a
fully functional Java application because it has the entire Java API at its
disposal.
● An applet is a Java class that extends the java.applet.Applet class.
main().
● Applets are designed to be embedded within an HTML page.
● When a user views an HTML page that contains an applet, the code for the
applet is downloaded to the user's machine.
browser or a separate runtime environment.
● The JVM on the user's machine creates an instance of the applet class and
invokes various methods during the applet's lifetime.
● Applets have strict security rules that are enforced by the Web browser. The
security of an applet is often referred to as sandbox security, comparing the
applet to a child playing in a sandbox with various rules that must be followed.
(JAR) file.
Life Cycle of an Applet:
Four methods in the Applet class give you the framework on which you
build any serious applet:
● init: This method is intended for whatever initialization is needed for your
applet. It is called after the param tags inside the applet tag have been
processed.
● start: This method is automatically called after the browser calls the init
applet after having gone off to other pages.
which the applet sits. It can, therefore, be called repeatedly in the same applet.
● destroy: This method is only called when the browser shuts down normally.
Because applets are meant to live on an HTML page, you should not normally
leave resources behind after a user leaves the page that contains the applet.
● paint: Invoked immediately after the start() method, and also any time the
applet needs to repaint itself in the browser. The paint() method is actually
inherited from the java.awt.
A "Hello, World" Applet:
The following is a simple applet named HelloWorldApplet.java:
import
java
.
applet
.*;
import
java
.
awt
.*;
public
class
HelloWorldApplet
extends
Applet
{
public
void
paint
(
Graphics
g
)
{
g
.
drawString
(
"Hello World"
,
25
,
50
);
}
}
These import statements bring the classes into the scope of our applet
class:
● java.applet.Applet.
● java.awt.Graphics.
Without those import statements, the Java compiler would not recognize
the classes Applet and Graphics, which the applet class refers to.
The Applet CLASS:
Every applet is an extension of the
java.applet.Applet class
. The base Applet
class provides methods that a derived Applet class may call to obtain
information and services from the browser context.
These include methods that do the following:
● Get applet parameters
● Get the network location of the HTML file that contains the applet
● Get the network location of the applet class directory
● Print a status message in the browser
● Fetch an image
● Fetch an audio clip
● Play an audio clip
● Resize the applet
Additionally, the Applet class provides an interface by which the viewer or
browser obtains information about the applet and controls the applet's
execution. The viewer may:
● request information about the author, version and copyright of the applet
● request a description of the parameters the applet recognizes
● initialize the applet
● destroy the applet
● start the applet's execution
● stop the applet's execution
The Applet class provides default implementations of each of these
methods. Those implementations may be overridden as necessary.
The "Hello, World" applet is complete as it stands. The only method
overridden is the paint method.
Invoking an Applet:
An applet may be invoked by embedding directives in an HTML file and
viewing the file through an applet viewer or Javaenabled browser.
The <applet> tag is the basis for embedding an applet in an HTML file.
Below is an example that invokes the "Hello, World" applet:
<html>
<title>
The Hello, World Applet
</title>
<hr>
<applet
code
=
"HelloWorldApplet.class"
width
=
"320"
height
=
"120"
>
If your browser was Javaenabled, a "Hello, World"
message would appear here.
</applet>
<hr>
</html>
The code attribute of the <applet> tag is required. It specifies the Applet
class to run. Width and height are also required to specify the initial size of
the panel in which an applet runs. The applet directive must be closed with
a </applet> tag.
The viewer or browser looks for the compiled Java code at the location of
the document. To specify otherwise, use the codebase attribute of the
<applet> tag as shown:
<applet
codebase
=
"http://amrood.com/applets"
code
=
"HelloWorldApplet.class"
width
=
"320"
height
=
"120"
>
If an applet resides in a package other than the default, the holding
package must be specified in the code attribute using the period character
(.) to separate package/class components. For example:
<applet
code
=
"mypackage.subpackage.TestApplet.class"
width
=
"320"
height
=
"120"
>
Getting Applet Parameters:
The following example demonstrates how to make an applet respond to
setup parameters specified in the document. This applet displays a
checkerboard pattern of black and a second color.
The second color and the size of each square may be specified as
parameters to the applet within the document.
The following is a skeleton of CheckerApplet.java:
import
java
.
applet
.*;
import
java
.
awt
.*;
public
class
CheckerApplet
extends
Applet
{
int
squareSize
=
50
;
// initialized to default size
public
void
init
()
{}
private
void
parseSquareSize
(
String
param
)
{}
private
Color
parseColor
(
String
param
)
{}
public
void
paint
(
Graphics
g
)
{}
}
Here are CheckerApplet's init() and private parseSquareSize() methods:
public
void
init
()
{
String
squareSizeParam
=
getParameter
(
"squareSize"
);
parseSquareSize
(
squareSizeParam
);
String
colorParam
=
getParameter
(
"color"
);
Color
fg
=
parseColor
(
colorParam
);
setBackground
(
Color
.
black
);
setForeground
(
fg
);
}
private
void
parseSquareSize
(
String
param
)
{
if
(
param
==
null
)
return
;
try
{
squareSize
=
Integer
.
parseInt
(
param
);
}
catch
(
Exception
e
)
{
// Let default value remain
}
}
The applet calls parseColor() to parse the color parameter into a Color
value. parseColor() does a series of string comparisons to match the
parameter value to the name of a predefined color. You need to implement
these methods to make this applet works.
Specifying Applet Parameters:
<html>
<title>
Checkerboard Applet
</title>
<hr>
<applet
code
=
"CheckerApplet.class"
width
=
"480"
height
=
"320"
>
<param
name
=
"color"
value
=
"blue"
>
<param
name
=
"squaresize"
value
=
"30"
>
</applet>
<hr>
</html>
Note:
Parameter names are not case sensitive.
Application Conversion to Applets:
It is easy to convert a graphical Java application (that is, an application that
uses the AWT and that you can start with the java program launcher) into
an applet that you can embed in a web page.
Here are the specific steps for converting an application to an applet.
● Make an HTML page with the appropriate tag to load the applet code.
● Supply a subclass of the JApplet class. Make this class public. Otherwise, the
applet cannot be loaded.
for the application. Your application will be displayed inside the browser.
● Move any initialization code from the frame window constructor to the init
method of the applet. You don't need to explicitly construct the applet
object.the browser instantiates it for you and calls the init method.
parameters in the HTML file.
● Remove the call to setDefaultCloseOperation. An applet cannot be closed; it
terminates when the browser exits.
have title bars. (You can, of course, title the web page itself, using the HTML
title tag.)
● Don't call setVisible(true). The applet is displayed automatically.
Event Handling:
In order to react an event, an applet must override the appropriate
eventspecific method.
import
java
.
awt
.
event
.
MouseListener
;
import
java
.
awt
.
event
.
MouseEvent
;
import
java
.
applet
.
Applet
;
import
java
.
awt
.
Graphics
;
public
class
ExampleEventHandling
extends
Applet
implements
MouseListener
{
StringBuffer
strBuffer
;
public
void init
()
{
addMouseListener(
this);
strBuffer =
new
StringBuffer ();
addItem(
"initializing the apple " );
}
public
void start
()
{
addItem(
"starting the applet " );
}
public
void stop
()
{
addItem(
"stopping the applet " );
}
public
void destroy
()
{
addItem(
"unloading the applet" );
}
void
addItem(
String
word)
{
System.
out
.
println(
word);
strBuffer.
append
(word);
repaint();
}
public
void paint
(
Graphics g
)
{
//Draw a Rectangle around the applet's display area.
g
.
drawRect(
0
,
0
,
getWidth()
1
,
getHeight()
1
);
//display the string inside the rectangle.
g
.
drawString(
strBuffer .
toString
(),
10
,
20
);
}
public
void mouseEntered(MouseEvent
event
)
{
}
public
void mouseExited(
MouseEvent
event
)
{
}
public
void mousePressed(MouseEvent
event
)
{
}
public
void mouseReleased (
MouseEvent
event
)
{
}
public
void mouseClicked(MouseEvent
event
)
{
addItem
("mouse clicked! " );
}
}
Now, let us call this applet as follows:
<html>
<title>
Event Handling
</title>
<hr>
<applet
code
=
"ExampleEventHandling.class"
width
=
"300"
height
=
"300"
>
</applet>
<hr>
</html>
Displaying Images:
Following is the example showing all the steps to show images:
import
java
.
applet
.*;
import
java
.
awt
.*;
import
java
.
net
.*;
public
class
ImageDemo
extends
Applet
{
private
Image
image
;
private
AppletContext
context
;
public
void
init
()
{
context
=
this
.
getAppletContext
();
String
imageURL
=
this
.
getParameter
(
"image"
);
if
(
imageURL
==
null
)
{
imageURL
=
"java.jpg"
;
}
try
{
URL url
=
new
URL
(
this
.
getDocumentBase
(),
imageURL
);
image
=
context
.
getImage
(
url
);
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
// Display in browser status bar
context
.
showStatus
(
"Could not load image!"
);
}
}
public
void
paint
(
Graphics
g
)
{
context
.
showStatus
(
"Displaying image"
);
g
.
drawImage
(
image
,
0
,
0
,
200
,
84
,
null
);
g
.
drawString
(
"www.javalicense.com"
,
35
,
100
);
}
}
Now, let us call this applet as follows:
<html>
<title>
The ImageDemo applet
</title>
<hr>
<applet
code
=
"ImageDemo.class"
width
=
"300"
height
=
"200"
>
<param
name
=
"image"
value
=
"java.jpg"
>
</applet>
<hr>
</html>
Playing Audio:
An applet can play an audio file represented by the AudioClip interface in
the java.applet package. The AudioClip interface has three methods,
including:
● public void play():
Plays the audio clip one time, from the beginning.
● public void loop():
Causes the audio clip to replay continually.
● public void stop():
Stops playing the audio clip.
Following is the example showing all the steps to play an audio:
import
java
.
applet
.*;
import
java
.
awt
.*;
import
java
.
net
.*;
public
class
AudioDemo
extends
Applet
{
private
AudioClip
clip
;
private
AppletContext
context
;
public
void
init
()
{
context
=
this
.
getAppletContext
();
String
audioURL
=
this
.
getParameter
(
"audio"
);
if
(
audioURL
==
null
)
{
audioURL
=
"default.au"
;
}
try
{
URL url
=
new
URL
(
this
.
getDocumentBase
(),
audioURL
);
clip
=
context
.
getAudioClip
(
url
);
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
context
.
showStatus
(
"Could not load audio file!"
);
}
}
public
void
start
()
{
if
(
clip
!=
null
)
{
clip
.
loop
();
}
}
public
void
stop
()
{
if
(
clip
!=
null
)
{
clip
.
stop
();
}
}
}
Now, let us call this applet as follows:
<html>
<title>
The ImageDemo applet
</title>
<hr>
<applet
code
=
"ImageDemo.class"
width
=
"0"
height
=
"0"
>
<param
name
=
"audio"
value
=
"test.wav"
>
</applet>
<hr>
</html>