42
Chapter 2 Applets and Multimedia

Apple Ts

Embed Size (px)

Citation preview

Page 1: Apple Ts

Chapter 2Applets and Multimedia

Page 2: Apple Ts

Introduction Executing an applet Applet class Applet tags and attributes Enabling Applets to run as Application Multimedia Applet context

Chapter 2 Applets and Multimedia

Page 3: Apple Ts

1.  Introduction Applets– Java programs that can be embedded in HyperText

Markup Language (HTML) documents// WelcomeApplet.java: Applet for displaying a messageimport javax.swing.*;public class WelcomeApplet extends JApplet { /** Initialize the applet */ public void init() { add(new JLabel("Welcome to Java", JLabel.CENTER)); }} <html>

<head><title>Welcome Java Applet</title></head><body><applet code = "WelcomeApplet.class“ width = 350 height = 200></applet></body></html>

Page 4: Apple Ts

Introduction (cont)

// WelcomeApplet.java: Applet for displaying a messageimport javax.swing.*;public class WelcomeApplet extends JApplet { /** Initialize the applet */ public WelcomeApplet() { add(new JLabel("Welcome to Java", JLabel.CENTER)); }}

// WelcomeApplet.java: Applet for displaying a messageimport javax.swing.*;public class WelcomeApplet extends JApplet { /** Initialize the applet */ public void init() { add(new JLabel("Welcome to Java", JLabel.CENTER)); }}

Alternative coding

Page 5: Apple Ts

2. Executing an Applet

2 ways:– Appletviewer– Web browser

Page 6: Apple Ts

WelcomeApplet Run Applet Viewer

2.1 Executing an Applet using Appletviewer

Using appletviewer

•In the directory containing the applet and HTML document, type appletviewer <html file>

•The appletviewer understands only the <applet> and </applet> HTML tags and ignores all other tags

Page 7: Apple Ts

2.2 Executing an Applet in a Web Browser

To execute an applet in Internet Explorer:– Select Open… from the File menu– Click the Browse… button– Locate the directory containing the HTML

document for the applet you wish to execute– Select the HTML document– Click the Open button– Click the OK button

Page 8: Apple Ts

3. The Applet Class

Figure illustrating the Applet inheritance hierarchy

Object

Component

Panel

Applet

JApplet

Container

Window

Frame

JFrame

Every applet is a subclass of java.applet.Applet.

Page 9: Apple Ts

The Applet Classpublic class MyApplet extends java.applet.Applet { ... /** The no-arg constructor is called by the browser when the Web page containing this applet is initially loaded, or reloaded */ public MyApplet() { ... }  public void init() { ... }  public void start() { ... }  public void stop() { ... }  public void destroy() { ... }  /** Other methods if necessary. Eg paint() */}

Reload enter Web Page

init()

stop()

destroy()

start()

After initReturn to page

Go to another page Exits

Page 10: Apple Ts

The Applet Class(cont)When the applet is loaded, the Web browser creates an instance of the applet by invoking the applet’s no-arg constructor. The browser uses the init, start, stop, and destroy methods to control the applet. By default, these methods do nothing. To perform specific functions, they NEED to be modified in the user's applet so that the browser can call your code properly.

Page 11: Apple Ts

The init() MethodInvoked when the applet is first loaded and

again IF the applet is reloaded.Normally performs functions

– loading images,

– setting up user-interface components

Page 12: Apple Ts

The start() Method Is called whenever the user returns to the page

containing the applet after surfing other Web pages.

Contains any operation that needs to be performed whenever the Web page containing the applet is visited.

ExampleAn applet with animation might use the start method to resume animation.

Page 13: Apple Ts

Paint()

Called after methods init and start

Is also called when the applets needs to be repainted

Generally used in drawing a graphic object passed to the method.

Page 14: Apple Ts

The stop() MethodThe stop() method is invoked when the user moves off

the page.

Use this to stop animation, audio files

Page 15: Apple Ts

The destroy() MethodInvoked by the browser to inform the applet that it is no longer needed.Use this method to release any resources it has allocated.

Usually, there is no need to write this method.

Page 16: Apple Ts

The JApplet ClassThe Applet class is an AWT class and is not designed to work with Swing components. To use Swing components in Java applets, it is necessary to create a Java applet that extends javax.swing.JApplet, which is a subclass of java.applet.Applet. JApplet inherits all the methods from the Applet class. In addition, it provides support for laying out Swing components.

Page 17: Apple Ts

Exampleimport java.awt.*; import javax.swing; public class BasicEventApplet extends JApplet { JTextArea messages = new JTextArea(8, 30); public BasicEventApplet() { messages.append( "Constructor\n" ); } public void init() { add( messages ); messages.append( "Init\n" ); } public void start() { messages.append( "Start\n" ); } public void stop() { messages.append( "Stop\n" ); } public void destroy() { messages.append( "Destroy\n" ); } public void paint( Graphics g ) {messages.append( "Paint\n" ); } }

Page 18: Apple Ts

Example: Using AppletsObjective: Compute Loans. The applet enables the user to enter the annual interest rate, the number of years, and the loan amount. Click the Compute Loan button, and the applet displays the monthly payment and the total payment.

Run Applet ViewerLoanApplet

Page 19: Apple Ts

4. Applet Tag and Attributes<applet code=classfilename.class width=applet_viewing_width_in_pixels height=applet_viewing_height_in_pixels [archive=archivefile] [codebase=applet_url] [vspace=vertical_margin] [hspace=horizontal_margin] [align=applet_alignment] [alt=alternative_text]<param name=param_name1 value=param_value1></applet>

Use alt display alternative text on browsers that do not support applets. The tag below provides such text.

Example<applet code="BasicEventApplet.class" width=300 height=200 alt= Your browser does <B>not</B> support applets! So you can not use my great applet. </APPLET>

Page 20: Apple Ts

Codebase: location of the class file relative to the web pageEg: <applet code=welcome.class width=100 height=150 codebase=“myApplets”>

Archive:list of Java archive file(s) containing the classes and other resources for the applet. These files are fetched from web server before the applet is loaded.

Eg:<applet code=calculator.class width=100 height=150 archive=“calculatorclasses.jar” >

hspace and vspace control horizontal and vertical spacing around the applet.

Applet Tag and Attributes (cont)

Page 21: Apple Ts

Passing Parameters to Applets

<applet code = "DisplayMessage.class" width = 200 height = 50><param name=FONT value=“Helvatica"> <param name=SIZE value=24> alt="You must have a Java-enabled browser to view the applet"</applet>

public class DisplayMessage extends Japplet{ public void init()

{ string fontName = getParameter(“FONT”);int fontSize = integer.parseInt(getParameter(“SIZE”));…

}}

• Pass information to an applet from the html page. • getParameter() method will read arguments with the param tag.

Page 22: Apple Ts

Example: Passing Parameters to Java Applets

Objective: Display a message at a specified location. The message and the location (x, y) are obtained from the HTML source.

Run Applet ViewerDisplayMessage

DisplayMessage html file.txt

Page 23: Apple Ts

5. Conversions Between Applications and Applets

Applets have security restrictions– Applets are not allowed to read from, or write to,

the file system of the computer viewing the applets.

– Applets are not allowed to run any programs on the browser’s computer.

– Applets are not allowed to establish connections between the user’s computer and another computer except with the server where the applets are stored.

Page 24: Apple Ts

Conversions Between Applications and Applets (cont)

Conversions between applications and applets are simple and easy.

You can convert an application to anapplet as long as security restrictions arenot violated.

You can always convert an applet into an application. Add a main method in the applet.

Page 25: Apple Ts

public static void main(String[] args) { JFrame frame = new JFrame("Applet is in the frame"); MyApplet applet = new MyApplet();

frame.add(applet, BorderLayout.CENTER); applet.init();

applet.start(); frame.setLocationRelativeTo(null); // Center the frame

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.setVisible(true);

}

Conversions Between Applications and Applets (cont)

Page 26: Apple Ts

Example: Running a Program as an Applet and as an Application

Objective: Modify MessageApplet to enable it to run both as an applet and as an application.

Run as Application Run as Applet

DisplayMessageApp

Page 27: Apple Ts

6. Multimedia URLs Obtaining multimedia files

– Images– Audio clips

Page 28: Apple Ts

6.1 Locating Resource Using the URL Class

The java.net.URL class can be used to identify files (image, audio, text, etc.) on the Internet.Eg :URL u=new URL(“http//java/sun.com/index,html”);

Page 29: Apple Ts

Locating Resource Using the URL Class(cont)

An URL for a file can also be accessed by class code if the file is located in the class directory.

The class directory is where the class (i.e., the .class file) is stored.

Eg. suppose the class directory is c:\book, the following statements create a URL for c:\book\image\us.gif.

Class class = this.getClass();URL url = class.getResource("image/us.gif");ImageIcon imageIcon=new ImageIcon(url);

Page 30: Apple Ts

Example

Write a program that displays an image from /image/us.gif in the class directory on a panel.

Run

DisplayImageWithURL

Page 31: Apple Ts

Applet methods: getCodeBase method gets URL of the applet

code getDocumentBase method gets the URL of the

HTML page that contains the applet.

Eg Image image = getImage(getCodeBase(), "imgDir/a.gif");

Locating Resource Using the URL Class(cont)

Page 32: Apple Ts

6.2 Loading and Displaying Images Java supports several image formats, including GIF,

JPEG and PNG Classes for loading and displaying images

Image ImageIcon

Image objectsApplet method getImage loads an Image into an

appletUse Graphics method drawImage to scale and

draw image ImageIcon objects

Use paintIcon to draw image

Page 33: Apple Ts

1 // Fig. 21.1: LoadImageAndScale.java 2 // Load an image and display it in its original size and twice its 3 // original size. Load and display the same image as an ImageIcon. 4 import java.awt.Graphics; 5 import java.awt.Image; 6 import javax.swing.ImageIcon; 7 import javax.swing.JApplet; 8 9 public class LoadImageAndScale extends JApplet 10 { 11 private Image image1; // create Image object 12 private ImageIcon image2; // create ImageIcon object 13 14 // load image when applet is loaded 15 public void init() 16 { 17 image1 = getImage( getDocumentBase(), "redflowers.png" ); 18 image2 = new ImageIcon( "yellowflowers.png" ); 19 } // end method init 20 21 // display image 22 public void paint( Graphics g ) 23 { 24 super.paint( g ); 25 26 g.drawImage( image1, 0, 0, this ); // draw original image 27 28 // draw image to fit the width and the height less 120 pixels 29 g.drawImage( image1, 0, 120, getWidth(), getHeight() - 120, this ); 30

Page 34: Apple Ts

31 // draw icon using its paintIcon method 32 image2.paintIcon( this, g, 180, 0 ); 33 } // end method paint 34 } // end class LoadImageAndScale

Page 35: Apple Ts

Applet methods getAudioClip(URL) getAudioClip(URL, String) newAudioClip(url);

– Return an object that implements the AudioClip interface. play(URL) play(URL, String)

– Play the AudioClip corresponding to the specified URL. The AudioClip interface defines the following methods:

– loop Starts playing the clip repeatedly.

– play Plays the clip once. Each time when this method is called,

the clip is restarted from the beginning– stop

Stops the clip. Works with both looping and one-time sounds.

6.3 Loading and Playing AudioClip

Page 36: Apple Ts

Loading and Playing AudioClip (cont)Eg 1 Class class = this.getClass();

URL url = class.getResource("beep.au");AudioClip audioClip = Applet.newAudioClip(url);

Eg2AudioClip onceClip, loopClip;onceClip = applet.getAudioClip(getCodeBase(), "bark.au");loopClip = applet.getAudioClip(getCodeBase(), "train.au");onceClip.play(); //Play it once.loopClip.loop(); //Start the sound loop.loopClip.stop(); //Stop the sound loop.

Page 37: Apple Ts

Example : Playing Audio

Run

DisplayImagePlayAudio

Page 38: Apple Ts

The AppletContext provides the ability for the applet to ask the browser to perform tasks for the applet.

AppletContext Methods getApplet(String) getApplets() getAudioClip(URL) getImage(URL) showDocument(URL) showDocument(URL, String) showStatus(String)

Note: getAudioClip(), getImage(), showStatus() in the Applet class call the corresponding methods in the AppletContext.

7. The Applet Context

Page 39: Apple Ts

All browsers allow applets to display a short status string

public void showStatus(String status) – Requests that the argument string be displayed in the status

bar of the browser or the appletviewer. Eg Image image = getImage(getCodeBase(), "imgDir/a.gif");

….g.drawImage(image, 0, 0 this);showStatus("MyApplet: Loading image file ");

The AppletContext - showStatus

Page 40: Apple Ts

public void showDocument(URL url) – Replaces the Web page currently being viewed with the

given URL. public void showDocument(URL url, String target)

– Requests that the browser or applet viewer show the Web page indicated by the url argument. The target argument indicates in which HTML frame the document is to be displayed.

The AppletContext - showDocument

Page 41: Apple Ts

Target Meaning

"_self" Show in the window and frame that contain the applet

"_parent" Show in the parent frame. If the applet's frame has no parent, acts the same as "_self"

"_top" Show in the topmost frame of the applet's window. If the applet's frame is the top-level, acts the same as "_self"

"_blank" Show in a new unnamed top-level window.

Name Show in the frame or window named name. If name does not exist,create a new top-level window named name, and show the document in it

The AppletContext - showDocument

Page 42: Apple Ts

import java.applet.*; Import javax.swing;import java.net.URL; import java.net.MalformedURLException; public class ShowDocumentApplet extends JApplet { public void init( ) { try { URL wwwSun = new URL( "http://java.sun.com/" ); AppletContext myContext = getAppletContext(); myContext.showDocument( wwwSun, "_blank"); } catch (MalformedURLException punt ) { } } }

Example - showDocument