Transcript ppt

L06 (Chapter 16)
Applets and Multimedia 2
Chapter 12 GUI Basics
§10.2, “Abstract Classes,” in Chapter 10
Chapter 13 Graphics
Chapter 14 Event-Driven Programming
§10.4, “Interfaces,” in Chapter 10
Chapter 15 Creating User Interfaces
Chapter 16 Applets and Multimedia
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
1
Optional
Case Study: TicTacToe
JPanel
-char token
Cell
+getToken
+setToken
-token: char+paintComponet
+mouseClicked
+getToken():char
Token used in the cell (default: ' ').
+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.
Returns the token in the cell.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
2
Case Study: TicTacToe, cont.
Cell
JApplet
9 token
-char
-char token
1
+getToken
+setToken
+paintComp
onet
+mouseClic
ked
+getToken
TicTacToe
+setToken
+paintComp
-whoseTurn:
char
onet
-cell: Cell[][]
+mouseClic
ked
-jlblStatus:
JLabel
Indicates which player has the turn, initially 'X'.
+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
A 3 by 3, two dimensional array for cells.
A label to display game status.
Run as Application
Run as Applet
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
3
Optional
Case Study: Bouncing Ball
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.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
4
Case Study: Bouncing Ball, cont.
JPanel
JApplet
JPanel
-char token
1
Ball
+getToken
+setToken
-x: int
+paintCom
ponet
-y: int
-dx: int +mouseCli
-dy: int cked
-radius: int
-delay: int
-timer: Timer
-char
token
1
BallControl
-char token
1
1
+getToken
-ball: Ball
+setToken
-jsbDelay: JScrollBar
+paintCo
-jbtResume: JButton
mponet
-jbtSuspend: JButton
+mouseCli
cked
+BallControl()
+getToken
BounceBallApp
+setToken
+paintComp
+BounceBallApp()
onet String[]): void
+main(args:
+mouseClic
ked
+Ball()
+suspend(): void
+resume(): void
+setDelay(delay: int): void
Ball
BallControl
BounceBallApp
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
Run
5
Locating Resource from Applets
Due to security restrictions, applets cannot access
local files. How can an applet load resource files for
image and audio?
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
6
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\\image\\us.gif");
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.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
7
Creating ImageIcon Using Relative File Names
Assume that image/us.gif is under the class directory,
you can circumvent this problem by using a relative
path as follows:
ImageIcon imageIcon = new ImageIcon("image/us.gif");
jlbl.setIcon(imageIcon);
This works fine with Java applications on all platforms, but
does not work with Java applets because applets cannot load
local files. To make it to work with both applications and
applets, you need to locate the file using the URL class.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
8
Locating Resource Using the URL Class
The java.net.URL class can be used to identify files (image,
audio, text, etc.) on the Internet. In general, a URL
(Uniform Resource Locator) is a pointer to a “resource” on
the World Wide Web on a local machine or a remote host. A
resource can be something as simple as a file or a directory.
An URL for a file can also be accessed by class code in a
way that is independent of the location of the file as long as
the file is located in the class directory. Recall that the class
directory is where the class (i.e., the .class file) is stored.
For example, all the classes in this book are stored in
c:\book. So the class directory is c:\book.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
9
Creating a URL from a Class Reference
As discussed in §9.11.5, “The getClass Method,” when a class is loaded, the JVM creates a meta-object
for the class, which can be obtained using
java.lang.Class metaObject = this.getClass();
The Class class provides access to useful information about the class, such as the data fields, constructors,
and methods. It also contains the getResource(filename) method, which can be used to obtain the URL of
a given file name in the class directory.
To obtain the URL of a file in the class directory, use
URL url = metaObject.getResource(filename);
For example, suppose the class directory is c:\book, the following statements create a URL for
c:\book\image\us.gif.
Class metaObject = this.getClass();
URL url = metaObject.getResource("image/us.gif");
You can now create an ImageIcon using
ImageIcon imageIcon = new ImageIcon(url);
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
10
Displaying Image
Write a program that displays an image from
/image/us.gif in the class directory on a panel.
DisplayImageWithURL
Run
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
11
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);
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
12
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, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
13
Multimedia Animation
ImageAudioAnimation
Run as an Application
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
14
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-user’s 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.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
15
Optional
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 TicTacToe$Cell.class.
jar -cf TicTacToe.jar TicTacToe.class TicTacToe$Cell.class
The -c option is for creating a new archive file, and
the -f option specifies the archive file’s name.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
16
Optional
Viewing the Contents of a JAR File
You can view the contents of a .jar file using
WinZip.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
17
Optional
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: TioTacToe$Cell.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.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
18
Optional
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-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 Windows desktop
icon, please see www.prenhall.com/liang/intro5e.html.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
19
Optional
Running Archived Projects As Applet
To run TicTacToe as an applet, modify the <APPLET> 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:
<APPLET
CODE = "TicTacToe.class"
ARCHIVE = "TicTacToe.jar"
WIDTH = 400
HEIGHT = 300
HSPACE = 0
VSPACE = 0
ALIGN = Middle
>
</APPLET>
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
20
Optional
Pluggable Look-and-Feel
The pluggable look-and-feel feature lets you design a single
set of GUI components that automatically has the look-andfeel 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
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
21
Optional
Setting Look-And-Feel
The javax.swing.UIManager class manages the look-andfeel 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.MotifLookAndFeel());
UIManager.setLookAndFeel
(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
22
Optional
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.getCrossPlatformLookAndFeelClassName());
}
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.”
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
23