|
Home | Résumé | Courses | Contact | Useful Links | Favorite Links | USC - Homepage |
Computer Science 1 - (CPTR151) - Lectures
Lecture 3 - Version 1.2.1
Lecture Outline
3.1 Introduction
3.2 Sample Applets from the Java 2 Software Development Kit
3.3 Simple Java Applet: Drawing a String
3.4 Drawing Strings and Lines
3.5 Adding Floating-Point Numbers
3.6 Java Applet Internet and World Wide Web Resources
3.1 Introduction
• Applet
– Program that runs in
• appletviewer (test utility for applets)
• Web browser (IE, Communicator)
– Executes when HTML (Hypertext Markup Language) document containing applet is opened and downloaded
– Applications run in command windows
• Notes
– Mimic several features of Chapter 2 to reinforce them
– Focus on fundamental programming concepts first
• Explanations will come later
3.2 Sample Applets from the Java 2 Software Development Kit
• Sample Applets
– Provided in Java 2 Software Development Kit (J2SDK)
– Source code included (.java files)
• Study and mimic source code to learn new features
• All programmers begin by mimicking existing programs
– Located in demo directory of J2SDK install
– Can download demos and J2SDK from here
• Running applets
– In command prompt, change to demo subdirectory of applet
cd c:\j2sdk1.4.1\demo\applets
cd appletDirectoryName
– There will be an HTML file used to execute applet
– Type appletviewer example1.html
• appletviewer loads the html file specified as its command-line argument
• From the HTML file, determines which applet to load (more section 3.3)
– Applet will run, Reload and Q
![]()
![]()
![]()
![]()
Sample execution of applet TicTacToe.
Sample execution of applet DrawTest.3.3 Simple Java Applet: Drawing a String
•Now, create applets of our own
– Take a while before We can write applets like in the demos
– Cover many of same techniques
• Upcoming program
– Create an applet to display
"Welcome to Java Programming!"
– Show applet and HTML file, then discuss them line by line1 // Fig. 3.6: WelcomeApplet.java
2 // A first applet in Java.
3
4 // Java packages
5 import java.awt.Graphics; // import class Graphics
6 import javax.swing.JApplet; // import class JApplet
7
8 public class WelcomeApplet extends JApplet {
9
10 // draw text on applet’s background
11 public void paint( Graphics g )
12 {
13 // call superclass version of method paint
14 super.paint( g );
15
16 // draw a String at x-coordinate 25 and y-coordinate 25
17 g.drawString( "Welcome to Java Programming!", 25, 25 );
18
19 } // end method paint
20
21 } // end class WelcomeApplet
![]()
1 // Fig. 3.6: WelcomeApplet.java
2 // A first applet in Java.
– Comments
• Name of source code and description of applet
5 import java.awt.Graphics; // import class Graphics
6 import javax.swing.JApplet; // import class JApplet
– Import predefined classes grouped into packages
• import declarations tell compiler where to locate classes used
• When you create applets, import the JApplet class (package javax.swing)
• import the Graphics class (package java.awt) to draw graphics
– Can draw lines, rectangles ovals, strings of characters
• import specifies directory structure
– Applets have at least one class declaration (like applications)
• Rarely create classes from scratch
– Use pieces of existing classes
– Inheritance - create new classes from old ones (ch. 9)
8 public class WelcomeApplet extends JApplet {
– Begins class declaration for class WelcomeApplet
• Keyword class then class name
– extends followed by class name
• Indicates class to extend (JApplet)
– JApplet : superclass (base class)
– WelcomeApplet : subclass (derived class)
• WelcomeApplet now has methods and data of JApplet
– Class JApplet defined for us
• Someone else defined "what it means to be an applet"
– Applets require over 200 methods!
• extends JApplet
– Inherit methods, do not have to declare them all
• Do not need to know every detail of class JApplet
– Class WelcomeApplet is a blueprint
• appletviewer or browser creates an object of class WelcomeApplet
– Keyword public required
– File can only have one public class
– public class name must be file name
11 public void paint( Graphics g )
– Our class inherits method paint from JApplet
• By default, paint has empty body
• Override (redefine) paint in our class
– Methods paint, init, and start
• Guaranteed to be called automatically
• Our applet gets "free" version of these by inheriting from JApplet
– Free versions have empty body (do nothing)
– Every applet does not need all three methods
• Override the ones you need
– Applet container “draws itself” by calling method paint
– Method paint
• Lines 11-19 are the declaration of paint
• Draws graphics on screen
• void indicates paint returns nothing when finishes task
• Parenthesis define parameter list - where methods receive data to perform tasks
– Normally, data passed by programmer, as in JOptionPane.showMessageDialog
• paint gets parameters automatically
– Graphics object used by paint
• Mimic paint's first line
14 super.paint( g );
– Calls version of method paint from superclass JApplet
– Should be first statement in every applet’s paint method
17 g.drawString( "Welcome to Java Programming!", 25, 25 );
– Body of paint
• Method drawString (of class Graphics)
• Called using Graphics object g and dot (.)
• Method name, then parenthesis with arguments
– First argument: String to draw
– Second: x coordinate (in pixels) location
– Third: y coordinate (in pixels) location
– Java coordinate system
• Measured in pixels (picture elements)
• Upper left is (0,0)
• Running the applet
– Compile
• javac WelcomeApplet.java
• If no errors, bytecodes stored in WelcomeApplet.class
– Create an HTML file
• Loads the applet into appletviewer or a browser
• Ends in .htm or .html
– To execute an applet
• Create an HTML file indicating which applet the browser (or appletviewer) should load and execute
1 <html>
2 <applet code = "WelcomeApplet.class" width = "300" height = "45">
3 </applet>
4 </html>
– Simple HTML file (WelcomeApplet.html)
• Usually in same directory as .class file
• Remember, .class file created after compilation
– HTML codes (tags)
• Usually come in pairs
• Begin with < and end with >
– Lines 1 and 4 - begin and end the HTML tags
– Line 2 - begins <applet> tag
• Specifies code to use for applet
• Specifies width and height of display area in pixels
– Line 3 - ends <applet> tag
1 <html>
2 <applet code = "WelcomeApplet.class" width = "300" height = "45">
3 </applet>
4 </html>
– appletviewer only understands <applet> tags
• Ignores everything else
• Minimal browser
– Executing the applet
• appletviewer WelcomeApplet.html
• Perform in directory containing .class file
• Running the applet in a Web browser
![]()
3.4 Drawing Strings and Lines
• More applets
– First example
• Display two lines of text
• Use drawString to simulate a new line with two drawString statements
– Second example
• Method g.drawLine(x1, y1, x2, y2 )
– Draws a line from (x1, y1) to (x2, y2)
– Remember that (0, 0) is upper left
• Use drawLine to draw a line beneath and above a string
1 // Fig. 3.9: WelcomeApplet2.java
2 // Displaying multiple strings in an applet.
3
4 // Java packages
5 import java.awt.Graphics; // import class Graphics
6 import javax.swing.JApplet; // import class JApplet
7
8 public class WelcomeApplet2 extends JApplet {
9
10 // draw text on applet’s background
11 public void paint( Graphics g )
12 {
13 // call superclass version of method paint
14 super.paint( g );
15
16 // draw two Strings at different locations
17 g.drawString( "Welcome to", 25, 25 );
18 g.drawString( "Java Programming!", 25, 40 );
19
20 } // end method paint
21
22 } // end class WelcomeApplet2
1 <html>
2 <applet code = "WelcomeApplet2.class" width = "300" height = "60">
3 </applet>
4 </html>
1 // Fig. 3.11: WelcomeLines.java
2 // Displaying text and lines
3
4 // Java packages
5 import java.awt.Graphics; // import class Graphics
6 import javax.swing.JApplet; // import class JApplet
7
8 public class WelcomeLines extends JApplet {
9
10 // draw lines and a string on applet’s background
11 public void paint( Graphics g )
12 {
13 // call superclass version of method paint
14 super.paint( g );
15
16 // draw horizontal line from (15, 10) to (210, 10)
17 g.drawLine( 15, 10, 210, 10 );
18
19 // draw horizontal line from (15, 30) to (210, 30)
20 g.drawLine( 15, 30, 210, 30 );
21
22 // draw String between lines at location (25, 25)
23 g.drawString( "Welcome to Java Programming!", 25, 25 );
24
25 } // end method paint
26
27 } // end class WelcomeLines
1 <html>
2 <applet code = "WelcomeLines.class" width = "300" height = "40">
3 </applet>
4 </html>
• Method drawLine of class Graphics
– Takes as arguments Graphics object and line’s end points
– X and y coordinate of first endpoint
– X and y coordinate of second endpoint
3.5 Adding Floating-Point Numbers
• Next applet
– Mimics application for adding two integers (Fig 2.9)
• This time, use floating point numbers (numbers with a decimal point)
– Using primitive types
• double – double precision floating-point numbers
• float – single precision floating-point numbers
– Show program, then discuss
1 // Fig. 3.13: AdditionApplet.java
2 // Adding two floating-point numbers.
3
4 // Java packages
5 import java.awt.Graphics; // import class Graphics
6 import javax.swing.*; // import package javax.swing
7
8 public class AdditionApplet extends JApplet {
9 double sum; // sum of values entered by user
10
11 // initialize applet by obtaining values from user
12 public void init()
13 {
14 String firstNumber; // first string entered by user
15 String secondNumber; // second string entered by user
16
17 double number1; // first number to add
18 double number2; // second number to add
19
20 // obtain first number from user
21 firstNumber = JOptionPane.showInputDialog("Enter first floating-point value" );
22
23
24 // obtain second number from user
25 secondNumber = JOptionPane.showInputDialog("Enter second floating-point value" );
26
27
28 // convert numbers from type String to type double
29 number1 = Double.parseDouble( firstNumber );
30 number2 = Double.parseDouble( secondNumber );
31
32 // add numbers
33 sum = number1 + number2;
34
35 } // end method init
36
37 // draw results in a rectangle on applet’s background
38 public void paint( Graphics g )
39 {
40 // call superclass version of method paint
41 super.paint( g );
42
43 // draw rectangle starting from (15, 10) that is 270
44 // pixels wide and 20 pixels tall
45 g.drawRect( 15, 10, 270, 20 );
46
47 // draw results as a String at (25, 25)
48 g.drawString( "The sum is " + sum, 25, 25 );
49
50 } // end method paint
51
52 } // end class AdditionApplet
1 <html>
2 <applet code = "AdditionApplet.class" width = "300" height = "65">
3 </applet>
4 </html>
– Lines 1-2: Comments
5 import java.awt.Graphics; // import class Graphics
–Line 5: imports class Graphics
• import not needed if use full package and class name public void paint ( java.awt.Graphics g )
6 import javax.swing.*; // import package javax.swing
– Line 8: specify entire javax.swing package
• * indicates all classes in javax.swing are available
– Includes JApplet and JOptionPane
– Use JOptionPane instead of javax.swing.JOptionPane
• * does not not load all classes
– Compiler only loads classes it uses
8 public class AdditionApplet extends JApplet {
– Begin class declaration
• Extend JApplet, imported from package javax.swing
9 double sum; // sum of values entered by user
– Field declaration
• Each object of class gets own copy of the field
• Declared in body of class, but not inside methods
– Variables declared in methods are local variables
– Can only be used in body of method
• Fields can be used anywhere in class
• Have default value (0.0 in this case)
– Primitive type double
• Used to store floating point (decimal) numbers
12 public void init()
– Method init
• Normally initializes fields and applet class
• Guaranteed to be first method called in applet
• First line must always appear as above
– Returns nothing (void), takes no arguments
13 {
– Begins body of method init
14 String firstNumber; // first string entered by user
15 String secondNumber; // second string entered by user
16
17 double number1; // first number to add
18 double number2; // second number to add
– Declare variables
– Two types of variables
• Reference variables (called references)
– Refer to objects (contain location in memory)
• Objects defined in a class definition
• Can contain multiple data and methods
– paint receives a reference called g to a Graphics object
– Reference used to call methods on the Graphics object
• Primitive types (called variables)
– Contain one piece of data
– Distinguishing references and variables
• If type is a class name, then reference
– String is a class
– firstNumber, secondNumber
• If type a primitive type, then variable
– double is a primitive type
– number1, number2
21 firstNumber = JOptionPane.showInputDialog("Enter first floating-point value" );
• Method JOptionPane.showInputDialog
• Prompts user for input with string
• Enter value in text field, click OK
– If not of correct type, error occurs
– In Chapter 15 learn how to deal with this
• Returns string user inputs
• Assignment statement to string
– Lines 25-26: As above, assigns input to secondNumber
29 number1 = Double.parseDouble( firstNumber );
30 number2 = Double.parseDouble( secondNumber );
– static method Double.parseDouble
• Converts String argument to a double
• Returns the double value
• Remember static method syntax
– ClassName.methodName( arguments )
33 sum = number1 + number2;
– Assignment statement
• sum an field, can use anywhere in class
– Not defined in init but still used
35 } // end method init
– Ends method init
• appletviewer (or browser) calls inherited method start
• start usually used with multithreading
– Advanced concept, in Chapter 16
– We do not declare it, so empty declaration in JApplet used
• Next, method paint called
45 g.drawRect( 15, 10, 270, 20 );
– Method drawRect( x1, y1, width, height )
• Draw rectangle, upper left corner (x1, y1), specified width and height
• Line 45 draws rectangle starting at (15, 10) with a width of 270 pixels and a height of 20 pixels
48 g.drawString( "The sum is " + sum, 25, 25 );
– Sends drawString message (calls method) to Graphics object using reference g
•" The sum is" + sum - string concatenation
– sum converted to a string
• sum can be used, even though not defined in paint
– field, can be used anywhere in class
– Non-local variable
Source: Java: How to Program – 5th Edition – Deitel & Deitel
|
Home | Résumé | Courses | Contact | Useful Links | Favorite Links | USC - Homepage |