Chapter 14 Applets, Images, and Audio - PowerPoint PPT Presentation

About This Presentation
Title:

Chapter 14 Applets, Images, and Audio

Description:

To write a Java program that can run as both an application and an ... implemented in this method include creating new threads, loading images, setting ... – PowerPoint PPT presentation

Number of Views:172
Avg rating:3.0/5.0
Slides: 50
Provided by: yda69
Category:

less

Transcript and Presenter's Notes

Title: Chapter 14 Applets, Images, and Audio


1
Chapter 14 Applets, Images, and Audio
2
Objectives
  • To explain how the Web browser controls and
    executes applets ( 14.2).
  • To describe the init, start, stop, and destroy
    methods in the Applet class ( 14.2).
  • To know how to embed applets in Web pages (
    14.4).
  • To run applets from appletviewer and from Web
    browsers ( 14.4).
  • To pass string values to applets from HTML (
    14.5).
  • To write a Java program that can run as both an
    application and an applet ( 14.6).
  • To get image files using the URL class and
    display images in the panel ( 14.9 Optional).
  • To develop a reusable component ImageViewer to
    display images ( 14.10 Optional).
  • To get audio files and play sound ( 14.12
    Optional).
  • To package and deploy Java projects using Java
    archive files ( 14.13 Optional).
  • To use Swing pluggable look-and-feel ( 14.14
    Optional).

3
The Applet Class
  • public 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()
  • ...
  •  
  • / Called by the browser after the applet is
    loaded
  • /
  • public void init()
  • ...
  •  
  • / Called by the browser after the init()
    method, or
  • every time the Web page is visited
  • /
  • public void start()

4
The Applet Class, cont.
  • When the applet is loaded, the Web browser
    creates an instance of the applet by invoking the
    applets 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.

5
Browser Calling Applet Methods
6
The init() Method
  • Invoked when the applet is first loaded and again
    if the applet is reloaded.
  • A subclass of Applet should override this method
    if the subclass has an initialization to perform.
    The functions usually implemented in this method
    include creating new threads, loading images,
    setting up user-interface components, and getting
    string parameter values from the ltappletgt tag in
    the HTML page.

7
The start() Method
  • Invoked after the init() method is executed
    also called whenever the applet becomes active
    again after a period of inactivity (for example,
    when the user returns to the page containing the
    applet after surfing other Web pages).
  • A subclass of Applet overrides this method if it
    has any operation that needs to be performed
    whenever the Web page containing the applet is
    visited. An applet with animation, for example,
    might use the start method to resume animation.

8
The stop() Method
  • The opposite of the start() method, which is
    called when the user moves back to the page
    containing the applet the stop() method is
    invoked when the user moves off the page.
  • A subclass of Applet overrides this method if it
    has any operation that needs to be performed each
    time the Web page containing the applet is no
    longer visible. When the user leaves the page,
    any threads the applet has started but not
    completed will continue to run. You should
    override the stop method to suspend the running
    threads so that the applet does not take up
    system resources when it is inactive.

9
The destroy() Method
  • Invoked when the browser exits normally to inform
    the applet that it is no longer needed and that
    it should release any resources it has allocated.
  • A subclass of Applet overrides this method if it
    has any operation that needs to be performed
    before it is destroyed. Usually, you won't need
    to override this method unless you wish to
    release specific resources, such as threads that
    the applet created.

10
The JApplet Class
  • The 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.

11
First Simple Applet
// WelcomeApplet.java Applet for displaying a
message import javax.swing. public class
WelcomeApplet extends JApplet / Initialize
the applet / public void init()
getContentPane().add(new JLabel("Welcome to
Java", JLabel.CENTER))
// WelcomeApplet.java Applet for displaying a
message import javax.swing. public class
WelcomeApplet extends JApplet / Initialize
the applet / public WelcomeApplet()
getContentPane().add(new JLabel("Welcome to
Java", JLabel.CENTER))
12
First Simple Applet
lthtmlgt ltheadgt lttitlegtWelcome Java
Appletlt/titlegt lt/headgt ltbodygt ltapplet code
"WelcomeApplet.class" width 350 height
200gt lt/appletgt lt/bodygt lt/htmlgt
WelcomeApplet
Run Applet Viewer
13
Example 14.1 Using Applets
  • Objective 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.

LoanApplet
Run Applet Viewer
14
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 anHTML page.

15
The ltappletgt HTML Tag
  • ltapplet
  • codeclassfilename.class
  • widthapplet_viewing_width_in_pixels
  • heightapplet_viewing_height_in_pixels
  • archivearchivefile
  • codebaseapplet_url
  • vspacevertical_margin
  • hspacehorizontal_margin
  • alignapplet_alignment
  • altalternative_text
  • gt
  • ltparam nameparam_name1 valueparam_value1gt
  • lt/appletgt

16
Passing Parameters to Applets
  • ltapplet
  • code "DisplayMessage.class"
  • width 200
  • height 50gt
  • ltparam nameMESSAGE value"Welcome to Java"gt
  • ltparam nameX value20gt
  • ltparam nameY value20gt
  • alt"You must have a Java-enabled browser to
    view the applet"
  • lt/appletgt

17
Example 14.2 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 Viewer
DisplayMessage
18
Applications vs. Applets
  • Similarities
  • Since they 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 applets
    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.

19
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 browsers computer.
  • Applets are not allowed to establish connections
    between the users computer and another computer
    except with the server wherethe applets are
    stored.

20
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 anapplet as
    long as security restrictions arenot violated.

21
Example 14.3Running a Program as an Appletand
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
22
Case Study TicTacToe
Optional
23
Case Study TicTacToe, cont.
Run as Applet
TicTacToe
Run as Application
24
Case Study Bouncing Ball
Optional
  • Objective Write an applet that displays a ball
    bouncing in a panel. Use two buttons to suspend
    and resume the movement and use a scroll bar to
    control the bouncing speed.

25
Case Study Bouncing Ball, cont.
Ball
BallControl
BounceBallApp
Run
26
What is Multimedia?
Optional
  • Multimedia is a broad term that encompasses
    making, storing, retrieving, transferring, and
    presenting various types of information, such as
    text, graphics, pictures, videos, and sound.
    Multimedia involves a complex weave of
    communications, electronics, and computer
    technologies. It is beyond the scope of this book
    to cover multimedia in great detail. This chapter
    concentrates on the presentation of multimedia in
    Java.
  • Whereas most programming languages have no
    built-in multimedia capabilities, Java was
    designed with multimedia in mind. It provides
    extensive built-in support that makes it easy to
    develop powerful multimedia applications. Java's
    multimedia capabilities include animation that
    uses drawings, audio, and images.

27
The URL Class
Optional
  • Audio and images are stored in files. The
    java.net.URL class can be used to identify the
    files on the Internet. In general, a URL (Uniform
    Resource Locator) is a pointer to a "resource" on
    the World Wide Web. A resource can be something
    as simple as a file or a directory. You can
    create a URL object using the following
    constructor
  •  
  • public URL(String spec) throws MalformedURLExcepti
    on
  •  
  • For example, the following statement creates a
    URL object for http//www.sun.com
  •  
  • try
  • URL url new URL("http//www.sun.com")
  • catch(MalformedURLException ex)
  •  

28
Creating a URL for Local Files
  • The following statement creates a URL object for
    the file c\book\image\us.gif.
  •  
  • try
  • URL url new URL("c\\book\\image\\us.gif")
  • catch(MalformedURLException ex)
  •  
  • The preceding statement creates a URL for the
    absolute file name c\book\beep.au on the
    Windows. There are two problems (1) the file
    location is fixed (2) it is platform-dependent.
    To circumvent these problems, you can create the
    URLs for files using through the resource of the
    class file using the java.lang.Class class.

29
Creating a URL from a Class Reference
  • Whenever the Java Virtual Machine loads a class
    or an interface, it creates an instance of a
    special class named Class. The Class class
    provides access to useful information about the
    class, such as the data fields and methods. It
    also contains the getResource(filename) method,
    which can be used to obtain the URL of a given
    file name in the same directory with the class or
    in its subdirectory. As discussed in Section
    8.4.5, The getClass Method, you can obtain the
    class for the object at runtime. Thus, you can
    use the following code to get the URL of a file
  •  
  • Class class this.getClass()
  • URL url class.getResource(filename)
  •  
  • where filename is a relative file name in the
    same directory or a subdirectory of the class.
    Suppose you run a class stored in c\book, the
    following statement creates a URL object for
    c\book\image\us.gif.
  •  
  • URL url this.getClass().getResource(image\us.gi
    f")

30
Creating ImageIcon Using Absolute File Names
  • You used the ImageIcon class to create an icon
    from an image file and the setIcon method or the
    constructor to place the image in a GUI
    component, such as a button and a label. For
    example, the following statements create an
    ImageIcon and set it on an JLabel object jlbl.
  •  
  • ImageIcon imageIcon new ImageIcon("c\\book\\ima
    ge\\us.gif")
  • //ImageIcon imageIcon new ImageIcon("image/us.gi
    f")
  • jlbl.setIcon(imageIcon)
  •  
  • This approach suffers a problem. The file
    location is fixed since it uses the absolute file
    path on Window. Thus, the program cannot run on
    other platforms and cannot run as applet.

31
Creating ImageIcon Using Class Reference
  • To circumvent this problem, you can create the
    URLs for files through the class reference using
    the java.lang.Class class. For example, suppose
    the class file is in 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")
  •  
  • You can now create an ImageIcon using
  •  
  • ImageIcon imageIcon new ImageIcon(url)

32
Creating Image From ImageIcon
  • An image icon displays a fixed-size image. To
    display an image in a flexible size, you need to
    use the java.awt.Image class. An image can be
    created from an image icon as follows
  • Image image imageIcon.getImage()
  • Given an Image, you can create an ImageIcon using
  •  
  • ImageIcon imageIcon new ImageIcon(image)

33
Drawing Images in Graphics
  • Using a label as an area for displaying images is
    simple and convenient, but you don't have much
    control over how the image is displayed. A more
    flexible way to display images is to use the
    drawImage method of the Graphics class on a panel
    using one of the foure overloaded drawImage
    method.

drawImage(Image img, int x, int y, Color bgcolor,
ImageObserver observer) drawImage(Image img, int
x, int y, ImageObserver observer) drawImage(Image
img, int x, int y, ImageObserver
observer) drawImage(Image img, int x, int y, int
width, int height, Color bgcolor, ImageObserver
observer)
ImageObserver is an asynchronous update interface
that receives notifications of image information
as the image is constructed. The Component class
implements ImageObserver. Therefore, every GUI
component is an instance of ImageObserver. To
draw images using the drawImage method in a Swing
component, such as JPanel, override the
paintComponent method to tell the component how
to display the image in the panel.
34
Displaying Image
  • Write a program that displays an image from
    /image/us.gif in the class directory on a panel.

DisplayImage
Run
35
Case Study ImageViewer Component
ImageViewer
36
Six Flag Example
  • Objective Use the ImageViewer class to display
    six flags.

SixFlags
Run
37
Case Study Image Animation
  • Objective Simulate a movie by displaying a
    sequence of images in a control loop.

ImageAnimation
Run as an Application
38
Creating AudioClip from an Audio File
  • To play an audio file in an applet, first create
    an audio clip object for the audio file. The
    audio clip is created once and can be played
    repeatedly without reloading the file. To create
    an audio clip, use the static method
    newAudioClip() in the java.applet.Applet class
  •  
  • AudioClip audioClip Applet.newAudioClip(url)
  •  
  • Audio was originally used with Java applets. For
    this reason, the AudioClip interface is in the
    java.applet package.
  • The following statements, for example, create an
    AudioClip for the beep.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)

39
Playing Audio
To manipulate a sound for an audio clip, use the
play(), loop(), and stop() methods in
java.applet.AudioClip.
40
Playing Anthem Example
  • Objective Display images and playing audio in
    applets and in applications.

FlagAnthem
Run as an Application
41
Packaging and Deploying Java Projects
Optional
  • What is JAR?
  • Java archive file can be used to group all the
    project files in a compressed file for
    deployment.
  • The Java archive file format (JAR) is based on
    the popular ZIP file format.
  • This single file can be deployed on an end-users
    machine as an application. It also can be
    downloaded to a browser in a single HTTP
    transaction, rather than opening a new connection
    for each piece. This greatly simplifies
    application deployment and improves the speed
    with which an applet can be loaded onto a web
    page and begin functioning.

42
Creating JAR
  • You can use the JDK jar command to create an
    archive file. The following command creates an
    archive file named TicTacToe.jar for classes
    TicTacToe.class and TicTacToeCell.class.
  • jar -cf TicTacToe.jar TicTacToe.class
    TicTacToeCell.class
  • The -c option is for creating a new archive file,
    and the -f option specifies the archive files
    name.

43
Viewing the Contents of a JAR File
  • You can view the contents of a .jar file using
    WinZip.

44
Manifest File
  • A manifest file was created with the path name
    meta-inf\. The manifest is a special file that
    contains information about the files packaged in
    a JAR file. For instance, the manifest file in
    TicTacToe.jar contains the following information
  •  
  • Manifest-Version 1.0
  •  
  • Name TicTacToe.class
  • Java-Bean True
  •  
  • Name TioTacToeCell.class
  • Java-Bean True
  •  
  • You can modify the information contained in the
    manifest file to enable 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
    application using the .jar file.

45
Running Archived Projects Standalone
  • The manifest file must have an entry to contain
    the main class. For example, to run TicTacToe,
    you need to insert the following two lines in the
    manifest file
  • Main-Class TicTacToe
  • Sealed true
  • Run the .jar file using the java command from the
    directory that contains TicTacToe.jar,
  •  
  • java -jar TicTacToe.jar
  • TIP You can write an installation procedure that
    creates the necessary directories and
    subdirectories on the end-users computer. The
    installation can also create an icon that the
    end-user can double-click on to start the
    program. For information on creating Windows
    desktop icon, please see www.prenhall.com/liang/in
    tro5e.html.

46
Running Archived Projects As Applet
  • To run TicTacToe as an applet, modify the
    ltAPPLETgt tag in the HTML file to include an
    ARCHIVE attribute. The ARCHIVE attribute
    specifies the archive file in which the applet is
    contained. For example, the HTML file for running
    TicTacToe can be modified as shown below
  •  
  • ltAPPLET
  • CODE "TicTacToe.class"
  • ARCHIVE "TicTacToe.jar"
  • WIDTH 400
  • HEIGHT 300
  • HSPACE 0
  • VSPACE 0
  • ALIGN Middle
  • gt
  • lt/APPLETgt

47
Pluggable Look-and-Feel
Optional
  • The pluggable look-and-feel feature lets you
    design a single set of GUI components that
    automatically has the look-and-feel of any OS
    platform. The implementation of this feature is
    independent of the underlying native GUI, yet it
    can imitate the native behavior of the native
    GUI.
  • Currently, Java supports the following three
    look-and-feel styles
  •  
  •         Metal
  •         Motif
  •         Windows

48
Setting Look-And-Feel
  • The javax.swing.UIManager class manages the
    look-and-feel of the user interface. You can use
    one of the following three methods to set the
    look-and-feel for Metal, Motif, or Windows
  • UIManager.setLookAndFeel
  • (UIManager.getCrossPlatformLookAndFeelClassName(
    ))
  • UIManager.setLookAndFeel
  • (new com.sun.java.swing.plaf.motif.MotifLookAndF
    eel())
  • UIManager.setLookAndFeel
  • (new com.sun.java.swing.plaf.windows.WindowsLook
    AndFeel())

49
Setting Look-And-Feel in Static Initialization
Block
  • To ensure that the setting takes effect, the
    setLookAndFeel method should be executed before
    any of the components are instantiated. Thus, you
    can put the code in a static block, as shown
    below
  • static
  • try
  • // Set a look-and-feel, e.g.,
  • //UIManager.setLookAndFeel
  • // (UIManager.getCrossPlatformLookAndFeelCl
    assName())
  • catch (UnsupportedLookAndFeelException ex)
  • Static initialization blocks are executed when
    the class is loaded. For more information on
    static initialization blocks, please refer to
    Section 8.12, Initialization Block.
Write a Comment
User Comments (0)
About PowerShow.com