Title: Applets
1Applets
2Applets
- An applet is a program that is typically embedded
in a Web page and can be run from a browser - You need special HTML in the Web page to tell the
browser about the applet - You dont need to supply a main method the
browser does that - When you write an applet, you are writing only
part of a program - You supply certain methods that the browser calls
- For security reasons, applets run in a sandbox
they have no access to the clients file system
3Applet Support
- Most modern browsers support applets if they have
the appropriate plugin - You need a version of the plugin at least as new
as the version of Java you are trying to run - The plugin is usually installed automatically
when you install a new version of Java - The best support isn't a browser, but the
standalone program appletviewer - appletviewer uses only the applets in a Web page,
and ignores everything else - If you want to reach the widest audience, you
should use Java 1.1, and AWT instead of Swing - This is because Microsoft no longer supports Java
4What an applet is
- You write an applet by extending the class
JApplet - JApplet is just a class like any other you can
even use it in applications if you want - When you write an applet, you are only writing
part of a program the browser supplies the main
method - Once you understand how applets work, you can
write a program that function either as an applet
or as an applicationjust write a main method
that calls the right methods at the right time - Such programs have the ugly name appletcations
5The genealogy of JApplet
java.lang.Object ----java.awt.Component
----java.awt.Container
----java.awt.Panel
----java.applet.Applet
----javax.swing.JApplet
6The simplest possible applet
TrivialApplet.java
import javax.swing.JApplet public class
TrivialApplet extends JApplet
TrivialApplet.html
ltapplet code"TrivialApplet.class"
width"150" height"100"gt lt/appletgt
7The simplest reasonable applet
import java.awt. import javax.swing.JApplet pu
blic class HelloWorld extends JApplet
public void paint(Graphics g)
g.drawString("Hello World!", 30, 30)
8Applet methods
- public void init ()
- public void start ()
- public void stop ()
- public void destroy ()
- public void paint (Graphics)
- Also
- public void repaint()
- public void update (Graphics)
- public void showStatus(String)
- public String getParameter(String)
9Why an applet works
- You write an applet by extending the class
JApplet - Applet defines methods init( ), start( ), stop(
), paint(Graphics), destroy( ) - These methods do nothing--they are stubs
- You make the applet do something by overriding
these methods - When you create an applet in BlueJ, it
automatically creates sample versions of these
methods for you
10public void init ( )
- init() is the first method to execute
- init() is an ideal place to initialize variables
- init() is the best place to define the GUI
Components (buttons, text fields, checkboxes,
etc.), lay them out, and add listeners to them - Almost every applet you ever write will have an
init( ) method
11 start( ), stop( ) and destroy( )
- start() and stop( ) are used when the Applet is
doing time-consuming calculations that you dont
want to continue when the page is not in front - public void start() is called
- Right after init( )
- Each time the page is loaded and restarted
- public void stop( ) is called
- When the browser leaves the page
- Just before destroy( )
- public void destroy( ) is called after stop( )
- Use destroy() to explicitly release system
resources (like threads) - System resources are usually released
automatically
12Methods are called in this order
- init and destroy are only called once each
- start and stop are called whenever the browser
enters and leaves the page - do some work is code called by your listeners
- paint is called when the applet needs to be
repainted
13public void paint(Graphics g)
- Needed if you do any drawing or painting other
than just using standard GUI Components - Any painting you want to do should be done here,
or in a method you call from here - Painting that you do in other methods may or may
not happen - Never call paint(Graphics), call repaint( )
14repaint( )
- Call repaint( ) when you have changed something
and want your changes to show up on the screen - You do not need to call repaint() when something
in Javas own components (Buttons, TextFields,
etc.) - You do need to call repaint() after drawing
commands (drawRect(...), fillRect(...),
drawString(...), etc.) - repaint( ) is a request--it might not happen
- When you call repaint( ), Java schedules a call
to update(Graphics g)
15update( )
- When you call repaint( ), Java schedules a call
to update(Graphics g) - Here's what update does
- public void update(Graphics g) // Fills
applet with background color, then
paint(g)
16Sample Graphics methods
- A Graphics is something you can paint on
17Painting at the right time is hard
- When you modify common components (JButtons,
JLabels, JTextFields, etc.), Java keeps the
screen display up to date - When you paint on a Graphics object, you have to
make your changes appear on the screen - To help ensure your changes appear on screen,
follow these rules - Rule 1 Never call paint(Graphics g), call
repaint( ) - Rule 2 Do all your painting in paint, or in a
method that is called from paint - Rule 3 If you paint on any Graphics other than
the Applets, call its update method from the
Applets paint method - Rule 4. Do your painting in a separate Thread
- These rules aren't perfect, but they should help
- If you follow these rules and the screen still
doesnt change, I probably wont be able to find
the problem, either -(
18Other useful JApplet methods
- System.out.println(String s)
- Works from appletviewer, not from browsers
- Automatically opens an output window.
- showStatus(String s) displays the String in the
applets status line. - Each call overwrites the previous call.
- You have to allow time to read the line!
19Applets are not magic!
- Anything you can do in an applet, you can do in
an application. - You can do some things in an application that you
cant do in an applet. - If you want to access files from an applet, it
must be a trusted applet. - Trusted applets are beyond the scope of this
course.
20Structure of an HTML page
- Most HTML tags are containers.
- A container is lttaggt to lt/taggt
21HTML
lthtmlgt ltheadgt lttitlegt Hi World Applet
lt/titlegt lt/headgt ltbodygt ltapplet
code"HiWorld.class" width300
height200gt ltparam name"arraysize"
value"10"gt lt/appletgt lt/bodygt lt/htmlgt
22The ltappletgt tag
- The ltapplet ...gt ... lt/appletgt tag is what tells
your browser to put an applet here - ltappletgt has three required attributes
- code"HiWorld.class" tells the browser where to
find the code - Alternatively, if your code is in a .jar file,
you can sayarchive"HiWorld.jar - width"300" tells the browser how many pixels
wide to make the applet window - A typical monitor resolution is 72 pixels/inch
- height"200" tells the browser how many pixels
high to make the applet window - In a browser, you cannot resize the applet but
in appletviewer, you can resize the applet
23ltparam name"arraysize" value"10"gt
- You can put parameters in the HTML page, to be
read by the applet - Parameters go between ltappletgt and lt/appletgt
- All parameters are read by the applet as Strings
- To read a parameter, use the applet methodpublic
String getParameter(String name) - Example
- String s getParameter("arraysize")
- try size Integer.parseInt (s) catch
(NumberFormatException e)
24The End