Your SlideShare is downloading. ×
0
Chapter 18 Applets and Multimedia     Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, ...
MotivationsWhen browsing the Web, you frequently see the graphical userinterface and animation developed using Java. These...
Objectives   To convert GUI applications into applets (§18.2).   To embed applets in Web pages (§18.3).   To run applet...
Developing Appletsimport javax.swing.*;                                                import javax.swing.*;              ...
The <applet> HTML Tag<applet   code=classfilename.class   width=applet_viewing_width_in_pixels   height=applet_viewing_hei...
First Simple Applet<html><head><title>Java Applet Demo</title></head><body><applet  code = "DisplayLabel.class"  width = 3...
Applications vs. Applets   Similarities    – Since JFrame and JApplet both are subclasses of the Container      class, al...
Security Restrictions on Applets   Applets are not allowed to read from, or write to,    the file system of the computer ...
Conversions Between        Applications and Applets   Conversions between applications and applets are    simple and easy...
Enabling Applets to Run as                         Applicationsimport javax.swing.*;public class DisplayLabel extends JApp...
The Applet ClassWhen the applet is loaded, the Web browser createsan instance of the applet by invoking the applet’sno-arg...
Browser Calling Applet Methods           Browser creates             Browser                    Browser                   ...
The init() MethodInvoked when the applet is first loaded and againif the applet is reloaded.A subclass of Applet should ov...
The start() MethodInvoked after the init() method is executed; also calledwhenever the applet becomes active again after a...
The stop() MethodThe opposite of the start() method, which is called when the usermoves back to the page containing the ap...
The destroy() MethodInvoked when the browser exits normally to informthe applet that it is no longer needed and that itsho...
Writing Applets   Always extends the JApplet class, which is a    subclass of Applet for Swing components.   Override in...
Passing Parameters to Applets<applet  code = "DisplayMessage.class"  width = 200  height = 50><param name=MESSAGE value="W...
Example: Passing Parameters to           Java AppletsObjective: Display amessage at aspecified location.The message and th...
Example: Running a Program as an  Applet and as an Application   Objective: Modify MessageApplet to enable it    to run b...
Case Study: Bouncing BallObjective: Write anapplet that displays a ballbouncing in a panel. Usetwo buttons to suspendand r...
Case Study: Bouncing Ball, cont.           JPanel                                                JPanel                   ...
Exercise for extending to multiple balls             JPanel                                                  JPanel       ...
Case Study: TicTacToe                   JPanel            -char token                  Cell           +getToken           ...
Case Study: TicTacToe, cont.   Cell                     JApplet   9-char token              -char token        1+getToken ...
Locating Resource from AppletsDue to security restrictions, applets cannot accesslocal files. How can an applet load resou...
Creating ImageIcon Using Absolute File NamesExample:  ImageIcon imageIcon = new     ImageIcon("c:bookimageus.gif");  jlbl....
Creating ImageIcon Using Relative File NamesAssume that image/us.gif is under the class directory,you can circumvent this ...
Locating Resource Using the URL ClassThe java.net.URL class can be used to identify files (image, audio,text, etc.) on the...
Creating a URL from a Class ReferenceA URL for a file can also be accessed from a class ina way that is independent of the...
Displaying ImageWrite a program that displays an image from/image/us.gif in the class directory on a panel.              D...
Creating AudioClip from an Audio FileTo play an audio file in an applet, first create an audio clip object forthe audio fi...
Playing Audio      «interface» java.applet.AudioClip+play()                                  Starts playing this audio cli...
Multimedia AnimationImageAudioAnimation                                    Run as an Application    Liang, Introduction to...
CompanionWebsite               Packaging and Deploying                           Java ProjectsWhat is JAR?Java archive fil...
CompanionWebsite                             Creating JARYou can use the JDK jar command to create anarchive file. The fol...
CompanionWebsite            Viewing the Contents of a JAR FileYou can view the contents of a .jar file using WinZip.      ...
CompanionWebsite                              Manifest FileA manifest file was created with the path name meta-inf. Theman...
CompanionWebsite     Running Archived Projects StandaloneThe manifest file must have an entry to contain the main class. F...
CompanionWebsite     Running Archived Projects As AppletTo run TicTacToe as an applet, modify the <APPLET> tagin the HTML ...
Upcoming SlideShare
Loading in...5
×

JavaYDL18

515

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
515
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "JavaYDL18"

  1. 1. Chapter 18 Applets and Multimedia Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1
  2. 2. MotivationsWhen browsing the Web, you frequently see the graphical userinterface and animation developed using Java. These programsare called Java applets. Suppose you want to develop a Javaapplet for the Sudoku game. How do you write this program? Sudoku Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 2
  3. 3. Objectives To convert GUI applications into applets (§18.2). To embed applets in Web pages (§18.3). To run applets from Web browsers and from the appletviewer command (§§18.3.1–18.3.2). To understand the applet security sandbox model (§18.4). To write a Java program that can run both as an application and as an applet (§18.5). To override the applet life-cycle methods init, start, stop, and destroy (§18.6). To pass string values to applets from HTML (§18.7). To develop an animation for a bouncing ball (§18.8). To develop an applet for the tic-tac-toe game (§18.9). To locate resources (images and audio) using the URL class (§18.10). To play audio in any Java program (§18.11). Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All 3 rights reserved.
  4. 4. Developing Appletsimport javax.swing.*; import javax.swing.*; JAppletpublic class DisplayLabel extends JFrame { public class DisplayLabel extends JFrame { public DisplayLabel() { public DisplayLabel() { add(new JLabel("Great!", JLabel.CENTER)); add(new JLabel("Great!", JLabel.CENTER)); } } public static void main(String[] args) { public static void main(String[] args) { JFrame frame = new DisplayLabel(); JFrame frame = new DisplayLabel(); frame.setTitle("DisplayLabel"); frame.setTitle("DisplayLabel"); frame.setSize(200, 100); frame.setSize(200, 100); frame.setLocationRelativeTo(null); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation( frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setVisible(true); } }} } Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 4
  5. 5. The <applet> HTML Tag<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> Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 5
  6. 6. First Simple Applet<html><head><title>Java Applet Demo</title></head><body><applet code = "DisplayLabel.class" width = 350 height = 200></applet></body></html> DisplayLabel Run Applet Viewer Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 6
  7. 7. Applications vs. Applets Similarities – Since JFrame and JApplet both are subclasses of the Container class, all the user interface components, layout managers, and event-handling features are the same for both classes. Differences – Applications are invoked from the static main method by the Java interpreter, and applets are run by the Web browser. The Web browser creates an instance of the applet using the applet’s no-arg constructor and controls and executes the applet through the init, start, stop, and destroy methods. – Applets have security restrictions – Web browser creates graphical environment for applets, GUI applications are placed in a frame. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 7
  8. 8. Security Restrictions on Applets 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. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 8
  9. 9. Conversions Between Applications and Applets Conversions between applications and applets are simple and easy. You can always convert an applet into an application. You can convert an application to an applet as long as security restrictions are not violated. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 9
  10. 10. Enabling Applets to Run as Applicationsimport javax.swing.*;public class DisplayLabel extends JApplet { public DisplayLabel() { add(new JLabel("Great!", JLabel.CENTER)); } public static void main(String[] args) { // Create a frame JFrame frame = new JFrame("Applet is in the frame"); // Create an instance of the applet DisplayLabel applet = new DisplayLabel(); // Add the applet to the frame frame.add(applet); // Display the frame frame.setSize(300, 100); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }} Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 10
  11. 11. The Applet ClassWhen the applet is loaded, the Web browser createsan instance of the applet by invoking the applet’sno-arg constructor. The browser uses the init, start,stop, and destroy methods to control the applet. Bydefault, these methods do nothing. To performspecific functions, they need to be modified in theusers applet so that the browser can call your codeproperly. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 11
  12. 12. Browser Calling Applet Methods Browser creates Browser Browser Browser the applet invokes init() invokes start() invokes start() Loaded Created Initialized Started Stopped Browser Browser invokes invokes stop() destroyed()JVM loads the Destroyedapplet class Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 12
  13. 13. The init() MethodInvoked when the applet is first loaded and againif the applet is reloaded.A subclass of Applet should override this method ifthe subclass has an initialization to perform. Thefunctions usually implemented in this methodinclude creating new threads, loading images,setting up user-interface components, and gettingstring parameter values from the <applet> tag in theHTML page. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 13
  14. 14. The start() MethodInvoked after the init() method is executed; also calledwhenever the applet becomes active again after a period ofinactivity (for example, when the user returns to the pagecontaining the applet after surfing other Web pages).A subclass of Applet overrides this method if it hasany operation that needs to be performed wheneverthe Web page containing the applet is visited. Anapplet with animation, for example, might use thestart method to resume animation. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 14
  15. 15. The stop() MethodThe opposite of the start() method, which is called when the usermoves back to the page containing the applet; the stop() method isinvoked when the user moves off the page.A subclass of Applet overrides this method if it has anyoperation that needs to be performed each time the Webpage containing the applet is no longer visible. When theuser leaves the page, any threads the applet has started butnot completed will continue to run. You should overridethe stop method to suspend the running threads so that theapplet does not take up system resources when it isinactive. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 15
  16. 16. The destroy() MethodInvoked when the browser exits normally to informthe applet that it is no longer needed and that itshould release any resources it has allocated.A subclass of Applet overrides this method if it hasany operation that needs to be performed before itis destroyed. Usually, you wont need to overridethis method unless you wish to release specificresources, such as threads that the applet created. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 16
  17. 17. Writing Applets Always extends the JApplet class, which is a subclass of Applet for Swing components. Override init(), start(), stop(), and destroy() if necessary. By default, these methods are empty. Add your own methods and data if necessary. Applets are always embedded in an HTML page. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 17
  18. 18. Passing Parameters to Applets<applet code = "DisplayMessage.class" width = 200 height = 50><param name=MESSAGE value="Welcome to Java"><param name=X value=20><param name=Y value=20>alt="You must have a Java-enabledbrowser to view the applet"</applet> Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 18
  19. 19. Example: Passing Parameters to Java AppletsObjective: Display amessage at aspecified location.The message and thelocation (x, y) areobtained from theHTML source. DisplayMessage Run Applet Viewer Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 19
  20. 20. 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. DisplayMessageApp Run as Application Run as Applet Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 20
  21. 21. Case Study: Bouncing BallObjective: Write anapplet that displays a ballbouncing in a panel. Usetwo buttons to suspendand resume themovement and use ascroll bar to control thebouncing speed. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 21
  22. 22. Case Study: Bouncing Ball, cont. JPanel JPanel JApplet -char token -char -char token 1 1 token 1 1 Ball +getToken BallControl +getToken BounceBallApp +setToken +getToken +setToken-x: int +paintCom -ball: Ball +setToken +paintComp +BounceBallApp()-y: int ponet -jsbDelay: JScrollBar +paintCo onet +main(args: String[]): void-dx: int +mouseCli -jbtResume: JButton mponet +mouseClic-dy: int cked -jbtSuspend: JButton +mouseCli ked-radius: int cked-delay: int +BallControl()-timer: Timer+Ball()+suspend(): void+resume(): void+setDelay(delay: int): void Ball BallControl BounceBallApp Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 22
  23. 23. Exercise for extending to multiple balls JPanel JPanel JApplet -char token -char -char token 1 1 token 1 1 BallPanel +getToken BallControl +getToken BounceBallApp +setToken +getToken +setToken +paintCom-list: ArrayList // list of balls +setToken -ballPanel: BallPanel +paintComp +BounceBallApp()-radius: intponet +paintCo -jsbDelay: JScrollBar onet +main(args: String[]): void-delay: int +mouseCli mponet -jbtResume: JButton +mouseClic cked-timer: Timer +mouseCli -jbtSuspend: JButton ked -jbtAdd: JButton cked+BallPanel() -jbtSubtract: JButton+suspend(): void+resume(): void +BallControl()+add(): void+subtract(): void+setDelay(delay: int): void+paintComponent(g: Graphics): SingleBall void +x: int +y: int +dx: int +dy: int +color: Color +SingleBall() Run Exercise18_19 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 23
  24. 24. Case Study: TicTacToe JPanel -char token Cell +getToken +setToken-token: char +paintComponet Token used in the cell (default: ). +mouseClicked+getToken():char Returns the token in the cell.+setToken(token: char): void Sets a new token in the cell.#paintComponent(g: Graphics): void Paints the token in the cell.+mouseClicked(e: MouseEvent): void Handles a mouse click on the cell. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 24
  25. 25. Case Study: TicTacToe, cont. Cell JApplet 9-char token -char token 1+getToken +getToken TicTacToe+setToken +setToken+paintComp -whoseTurn: char +paintComp Indicates which player has the turn, initially X.onet onet+mouseClic -cell: Cell[][] +mouseClic A 3 by 3, two dimensional array for cells.ked -jlblStatus: JLabel ked A label to display game status. +TicTacToe() Constructs the TicTacToe user interface. +isFull(): boolean Returns true if all cells are filled. +isWon(token: char): boolean Returns true if a player with the specified token has won. TicTacToe Run as Application Run as Applet Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 25
  26. 26. Locating Resource from AppletsDue to security restrictions, applets cannot accesslocal files. How can an applet load resource files forimage and audio? Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 26
  27. 27. Creating ImageIcon Using Absolute File NamesExample: ImageIcon imageIcon = new ImageIcon("c:bookimageus.gif"); jlbl.setIcon(imageIcon);This approach suffers a problem. The file location isfixed since it uses the absolute file path on Window.Thus, the program cannot run on other platforms andcannot run as applet. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 27
  28. 28. Creating ImageIcon Using Relative File NamesAssume that image/us.gif is under the class directory,you can circumvent this problem by using a relativepath as follows: ImageIcon imageIcon = new ImageIcon("image/us.gif"); jlbl.setIcon(imageIcon);This works fine with Java applications on all platforms, butdoes not work with Java applets because applets cannot loadlocal files. To make it to work with both applications andapplets, you need to locate the file using the URL class. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 28
  29. 29. Locating Resource Using the URL ClassThe java.net.URL class can be used to identify files (image, audio,text, etc.) on the Internet. In general, a URL (Uniform ResourceLocator) is a pointer to a “resource” on the World Wide Web on alocal machine or a remote host. A resource can be something assimple as a file or a directory.Directory . . An applet or . application Class metaObject = this.getClass(); URL url = metaObject.getResource(resourceFilename); . . A resource file . Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 29
  30. 30. Creating a URL from a Class ReferenceA URL for a file can also be accessed from a class ina way that is independent of the location of the file,as long as the resource file is located in the classdirectory. C:book . . An applet or . application Class metaObject = this.getClass(); URL url = metaObject.getResource("image/us.gif"); . . image . us.gif Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 30
  31. 31. Displaying ImageWrite a program that displays an image from/image/us.gif in the class directory on a panel. DisplayImageWithURL Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 31
  32. 32. Creating AudioClip from an Audio FileTo play an audio file in an applet, first create an audio clip object forthe audio file. The audio clip is created once and can be playedrepeatedly without reloading the file. To create an audio clip, use thestatic method newAudioClip() in the java.applet.Applet class: AudioClip audioClip = Applet.newAudioClip(url);Audio was originally used with Java applets. For this reason, theAudioClip interface is in the java.applet package.The following statements, for example, create an AudioClip for thebeep.au audio file in the same directory with the class you are running. Class class = this.getClass(); URL url = class.getResource("beep.au"); AudioClip audioClip = Applet.newAudioClip(url); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 32
  33. 33. Playing Audio «interface» java.applet.AudioClip+play() Starts playing this audio clip. Each time this method is called, the clip is restarted from the beginning.+loop() Plays the clip repeatedly.+stop() Stops playing the clip. To manipulate a sound for an audio clip, use the play(), loop(), and stop() methods in java.applet.AudioClip. DisplayImagePlayAudio Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 33
  34. 34. Multimedia AnimationImageAudioAnimation Run as an Application Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 34
  35. 35. CompanionWebsite Packaging and Deploying Java ProjectsWhat is JAR?Java archive file can be used to group all the project files in acompressed file for deployment.The Java archive file format (JAR) is based on the popular ZIP fileformat.This single file can be deployed on an end-user’s machine as anapplication. It also can be downloaded to a browser in a single HTTPtransaction, rather than opening a new connection for each piece. Thisgreatly simplifies application deployment and improves the speedwith which an applet can be loaded onto a web page and beginfunctioning. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 35
  36. 36. CompanionWebsite Creating JARYou can use the JDK jar command to create anarchive file. The following command creates anarchive file named TicTacToe.jar for classesTicTacToe.class and TicTacToe$Cell.class. jar -cf TicTacToe.jar TicTacToe.class TicTacToe$Cell.classThe -c option is for creating a new archive file, andthe -f option specifies the archive file’s name. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 36
  37. 37. CompanionWebsite Viewing the Contents of a JAR FileYou can view the contents of a .jar file using WinZip. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 37
  38. 38. CompanionWebsite Manifest FileA manifest file was created with the path name meta-inf. Themanifest is a special file that contains information about the filespackaged in a JAR file. For instance, the manifest file inTicTacToe.jar contains the following information: Manifest-Version: 1.0 Name: TicTacToe.class Java-Bean: True Name: TioTacToe$Cell.class Java-Bean: TrueYou can modify the information contained in the manifest file toenable the JAR file to be used for a variety of purposes. For instance,you can add information to specify a main class to run an applicationusing the .jar file. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 38
  39. 39. CompanionWebsite Running Archived Projects StandaloneThe manifest file must have an entry to contain the main class. Forexample, to run TicTacToe, you need to insert the following two linesin the manifest file: Main-Class: TicTacToe Sealed: trueRun the .jar file using the java command from the directory thatcontains TicTacToe.jar, java -jar TicTacToe.jarTIP: You can write an installation procedure that creates thenecessary directories and subdirectories on the end-user’s computer.The installation can also create an icon that the end-user can double-click on to start the program. For information on creating Windowsdesktop icon, please see www.prenhall.com/liang/intro5e.html. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 39
  40. 40. CompanionWebsite Running Archived Projects As AppletTo run TicTacToe as an applet, modify the <APPLET> tagin the HTML file to include an ARCHIVE attribute. TheARCHIVE attribute specifies the archive file in which theapplet is contained. For example, the HTML file forrunning TicTacToe can be modified as shown below: <APPLET CODE = "TicTacToe.class" ARCHIVE = "TicTacToe.jar" WIDTH = 400 HEIGHT = 300 HSPACE = 0 VSPACE = 0 ALIGN = Middle > </APPLET> Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 40
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×