Applets: CS 3331 Fall 2009
Applets: CS 3331 Fall 2009
Outline
Basics of applets First applet HelloWorldApplet.java More on applets Animation applet digital clock
An applet is a special Java program that can be embedded in HTML documents. It is automatically executed by (appletenabled) web browsers. In Java, non-applet programs are called applications.
Application
Trusted (i.e., has full access to system resources) Invoked by Java Virtual Machine (JVM, java), e.g., java HelloWorld Should contain a main method, i.e., public static void main(String[]) Not trusted (i.e., has limited access to system resource to prevent security breaches) Invoked automatically by the web browser Should be a subclass of class java.applet.Applet
Applet
Examples
HelloWorld.java
public class HelloWord { public static void main(String[] args) { System.out.println(Hello, World!); } }
HelloWorldApplet.java
Graphics Coordinate
(0,0)
x
height
y width
Elements of Applets
Superclass: java.applet.Applet No main method paint method to paint the picture Applet tag: <applet> </applet>
10
Outline
Basics of applets First applet HelloWorldApplet.java More on applets Animation applet digital clock
11
Framework-Based Programming
(OO) Frameworks
Semi-complete applications. Provide the structure (backbone) and utilities for applications. Often domain specific. Inversion of control. Examples: applets, GUI frameworks, etc.
12
j av a.awt.Panel
13
init()
Called exactly once in an applets life. Called when applet is first loaded, which is after object creation, e.g., when the browser visits the web page for the first time. Used to read applet parameters, start downloading any other images or media files, etc.
14
start()
Called at least once. Called when an applet is started or restarted, i.e., whenever the browser visits the web page. Called at least once. Called when the browser leaves the web page.
stop()
15
destroy()
Called exactly once. Called when the browser unloads the applet. Used to perform any final clean-up.
init
start
stop
destroy
start
16
Outline
Basics of applets First applet HelloWorldApplet.java More on applets Animation applet digital clock
17
18
Program Structure
java.applet.Applet
javax.swing.Timer
<<use>>
java.util.Calendar
<<use>>
<<use>>
java.awt
java.awt.event
19
public void start(){...} invoked when entering the web page that contains the applet public void stop(){...} invoked when leaving the web page that contains the applet public void paint(Graphics g){...} paint the picture
20
Field Declarations
protected Timer timer; protected Font font = new Font("Monospaced", Font.BOLD, 48); protected Color color = Color.GREEN;
21
Object Initialization
public DigitalClock() { timer = new Timer(1000, createTimerTickHandler()); } protected ActionListener createTimerTickHandler() { return new ActionListener() { public void actionPerformed(ActionEvent event) { repaint(); } }; }
22
Start and stop the timer Stopped timer will not consume CPU time.
23
24
25
Drawing Strings
g.drawString("A sample string", x, y)
26
HTML Source
<!-- DigitalClock.html --> <html> <head> <title>Digital Clock Applet</title> </head> <body bgcolor=black> <h1>The Digital Clock Applet</h1><p> <applet code=DigitalClock.class width=250 height=80> </applet> <p><hr> <a href=DigitalClock.java>The source</a> </body> </html>
27
where r, g, b are the values of the red, green, and blue components, respectively. They are in the in the range of 0 to 255.
Predefined constants BLACK ORANGE YELLOW BLUE GREEN PINK CYAN LIGHTGRAY RED ARKGRAY MAGENTA WHITE
28
font name: Serif Sans-serif Monospaced Dialog DialogInput TimesRoman Helvetica Courier font style: PLAIN BOLD ITALIC Styles can be combined: Font.BOLD|Font.ITALIC
29
Exercise
Write an applet class named CuckooDigitalClock that behaves like DigitalClock except that it cuckoos at every hour by playing an audio file cuckoo.au. Hints
To play an audio file, use play(getCodeBase(), cuckoo.au). To get the current time, use the class java.util.Calendar, e.g.,
Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE);
30