31
Applets

Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Embed Size (px)

Citation preview

Page 1: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Applets

Page 2: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Applets

• An applet is a Panel that allows interaction with a Java program

• A applet 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

• For security reasons, applets run in a sandbox: they have no access to the client’s file system

Page 3: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Applet Support

• Most modern browsers support Java 1.4 if they have the appropriate plugin

• In the PC labs, Internet Explorer 5.5 has been updated, but Netscape has not

• The best support isn't a browser, but the standalone program appletviewer

• In general you should try to write applets that can be run with any browser

Page 4: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

What an applet is

• You write an applet by extending the class Applet

• Applet 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

Page 5: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

The genealogy of Applet

java.lang.Object | +----java.awt.Component | +----java.awt.Container | +----java.awt.Panel | +----java.applet.Applet

Page 6: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

The simplest possible applet

import java.applet.Applet;public class TrivialApplet extends Applet { }

<applet code="TrivialApplet.class” width=150 height=100></applet>

TrivialApplet.java

TrivialApplet.html

Page 7: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

The simplest reasonable applet

import java.awt.*;import java.applet.Applet;

public class HelloWorld extends Applet { public void paint( Graphics g ) { g.drawString( "Hello World!", 30, 30 ); }}

Page 8: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Applet 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)

Page 9: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Why an applet works

• You write an applet by extending the class Applet• 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

Page 10: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

public void init ( )

• This is the first method to execute• It is an ideal place to initialize variables• It is the best place to define the GUI Components

(buttons, text fields, scrollbars, etc.), lay them out, and add listeners to them

• Almost every applet you ever write will have an init( ) method

Page 11: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

public void start ( )

• Not always needed• Called after init( )• Called each time the page is loaded and restarted• Used mostly in conjunction with stop( )• start() and stop( ) are used when the Applet is

doing time-consuming calculations that you don’t want to continue when the page is not in front

Page 12: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

public void stop( )

• Not always needed• Called when the browser leaves the page• Called just before destroy( )• Use stop( ) if the applet is doing heavy

computation that you don’t want to continue when the browser is on some other page

• Used mostly in conjunction with start()

Page 13: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

public void destroy( )

• Seldom needed• Called after stop( )• Use to explicitly release system resources (like

threads)• System resources are usually released

automatically

Page 14: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Methods 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

init()

start()

stop()

destroy()

do some work

Page 15: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

public 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( )

Page 16: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

repaint( )

• Call repaint( ) when you have changed something and want your changes to show up on the screen

• repaint( ) is a request--it might not happen• When you call repaint( ), Java schedules a call to

update(Graphics g)

Page 17: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

update( )

• 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);}

Page 18: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Sample Graphics methods

• A Graphics is something you can paint on

g.drawRect(x, y, width, height);g.fillRect(x, y, width, height);g.drawOval(x, y, width, height);

g.fillOval(x, y, width, height);

g.setColor(Color.red);

g.drawString(“Hello”, 20, 20); Hello

Page 19: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Painting at the right time is hard

• Rule #1: Never call paint(Graphics g), call repaint( ).

• Rule #2: Do all your painting in paint, or in a method that you call from paint.

• Rule #3: If you paint on any Graphics other than the Applet’s, call its update method from the Applet’s paint method.

• Rule #4. Do your painting in a separate Thread.• These rules aren't perfect, but they should help.

Page 20: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Other useful Applet methods

• System.out.println(String s)– Works from appletviewer, not from browsers

– Automatically opens an output window.

• showStatus(String) displays the String in the applet’s status line.– Each call overwrites the previous call.

– You have to allow time to read the line!

Page 21: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Applets 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 can’t do in an applet.

• If you want to access files from an applet, it must be a “trusted” applet.

Page 22: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

Structure of an HTML page

HTML

TITLE

BODYHEAD

(content)

• Most HTML tags are containers.

• A container is <tag> to </tag>

Page 23: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

HTML

<html> <head> <title> Hi World Applet </title> </head>

<body> <applet code="HiWorld.class” width=300 height=200> <param name="arraysize" value="10"> </applet> </body></html>

Page 24: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

<param name="arraysize" value="10">

• public String getParameter(String name)

• String s = getParameter("arraysize");

• try { size = Integer.parseInt (s) }catch (NumberFormatException e) {…}

Page 25: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

INE2720 – Web Application Software Development

All copyrights reserved by C.C. Cheung 2003. 25

Applet Exampleimport java.applet.Applet;import java.awt.*;

/** An applet that draws an image. */

public class JavaJump extends Applet { private Image jumpingJava; // Instance var declarations

here

public void init() { // Initializations here setBackground(Color.white); setFont(new Font("SansSerif", Font.BOLD, 18)); jumpingJava = getImage(getDocumentBase(), "images/Jumping-Java.gif"); add(new Label("Great Jumping Java!")); System.out.println("Yow! I'm jiving with Java."); }

public void paint(Graphics g) { // Drawing here g.drawImage(jumpingJava, 0, 50, this); }}

Page 26: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

INE2720 – Web Application Software Development

All copyrights reserved by C.C. Cheung 2003. 26

Applet Example, Result<HTML><HEAD> <TITLE>Jumping Java</TITLE></HEAD><BODY BGCOLOR="BLACK" TEXT="WHITE"><H1>Jumping Java</H1><P><APPLET CODE="JavaJump.class" WIDTH=250 HEIGHT=335> <B>Sorry, this example requires Java.</B></APPLET></BODY></HTML>

Page 27: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

27

Setting Applet Parameters

<h1>Customizable HelloWWW Applet</h1>

<applet code="HelloWWW2.class" width=400 height=40> <param name="BACKGROUND" value="LIGHT"> <b>Error! You must use a Java-enabled browser.</b></applet>

<applet code="HelloWWW2.class" width=400 height=40> <param name="BACKGROUND" value="DARK"> <b>Error! You must use a Java-enabled browser.</b></applet>

<applet code="HelloWWW2.class" width=400 height=40> <b>Error! You must use a Java-enabled browser.</b></applet>

Page 28: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

All copyrights reserved by C.C. Cheung 2003. 28

Reading Applet Parameters

• Use getParameter(name) to retrieve the value of the PARAM element and the name argument is case sensitive

publicpublic void void init()init() { { Color background = Color.gray;Color background = Color.gray; Color foreground = Color.darkGray;Color foreground = Color.darkGray; String backgroundType = String backgroundType = getParametergetParameter("BACKGROUND");("BACKGROUND"); if (backgroundType != null) {if (backgroundType != null) { if (backgroundType.equalsIgnoreCase("LIGHT")) {if (backgroundType.equalsIgnoreCase("LIGHT")) { background = Color.white;background = Color.white; foreground = Color.black;foreground = Color.black; } else if (backgroundType.equalsIgnoreCase("DARK")) {} else if (backgroundType.equalsIgnoreCase("DARK")) { background = Color.black;background = Color.black; foreground = Color.white;foreground = Color.white; }} } ...} ... }}}}

Page 29: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

29

Reading Applet Parameters:Result

Page 30: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

30

Loading Applet Image from Relative URL

import java.applet.Applet;import java.awt.*;/** An applet that loads an image

from a relative URL. */public class JavaMan1 extends Applet

{ private Image javaMan; public void init() { javaMan =

getImage(getCodeBase(), "images/Java-Man.gif");

} public void paint(Graphics g) { g.drawImage(javaMan, 0, 0, this); }}

Page 31: Applets. An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from a browser You

31

Loading Applet Image from Absolute URL

import java.applet.Applet;import java.awt.*;import java.net.*;... private Image javaMan; public void init() { try { URL imageFile = new

URL("http://www.corewebprogramming.com" + "/images/Java-Man.gif"); javaMan = getImage(imageFile); } catch(MalformedURLException mue) { showStatus("Bogus image URL."); System.out.println("Bogus URL"); } }