Applets Applets n n n An applet is

  • Slides: 25
Download presentation
Applets

Applets

Applets n n n An applet is a program that is typically embedded in

Applets n n n An applet is a program that is typically embedded in a Web page and can be run from a browser You need special HTML in the Web page to tell the browser about the applet You don’t need to supply a main method; the browser does that n n n When you write an applet, you are writing only part of a program You supply certain methods that the browser calls For security reasons, applets run in a sandbox: they have no access to the client’s file system 2

Applet Support n Most modern browsers support applets if they have the appropriate plugin

Applet Support n Most modern browsers support applets if they have the appropriate plugin n The best support isn't a browser, but the standalone program appletviewer n n You need a version of the plugin at least as new as the version of Java you are trying to run The plugin is usually installed automatically when you install a new version of Java appletviewer uses only the applets in a Web page, and ignores everything else If you want to reach the widest audience, you should use Java 1. 1, and AWT instead of Swing n This is because Microsoft no longer supports Java 3

What an applet is n n n You write an applet by extending the

What an applet is n n n You write an applet by extending the class JApplet is just a class like any other; you can even use it in applications if you want When you write an applet, you are only writing part of a program; the browser supplies the main method n Once you understand how applets work, you can write a program that function either as an applet or as an application —just write a main method that calls the right methods at the right time n Such programs have the ugly name “appletcations” 4

The genealogy of JApplet java. lang. Object | +----java. awt. Component | +----java. awt.

The genealogy of JApplet java. lang. Object | +----java. awt. Component | +----java. awt. Container | +----java. awt. Panel | +----java. applet. Applet | +----javax. swing. JApplet 5

The simplest possible applet Trivial. Applet. java import javax. swing. JApplet; public class Trivial.

The simplest possible applet Trivial. Applet. java import javax. swing. JApplet; public class Trivial. Applet extends JApplet { } Trivial. Applet. html <applet code="Trivial. Applet. class" width="150" height="100"> </applet> 6

The simplest reasonable applet import java. awt. *; import javax. swing. JApplet; public class

The simplest reasonable applet import java. awt. *; import javax. swing. JApplet; public class Hello. World extends JApplet { public void paint(Graphics g) { g. draw. String("Hello World!", 30); } } 7

Applet methods public public Also: public void void init () start () stop ()

Applet methods public public Also: public void void init () start () stop () destroy () paint (Graphics) void repaint() void update (Graphics) void show. Status(String) String get. Parameter(String) 8

How an applet works n n n You write an applet by extending the

How an applet works n n n You write an applet by extending the class JApplet Write and compile your applet just as you would any other class Write an HTML (web) page containing a reference to the applet Open the web page in a browser The browser, not your applet, contains the “main” method The browser also contains all the applet methods, such as init( ) and paint(Graphics) n n n These methods do nothing--they are stubs You make the applet do something by overriding these methods The browser calls your methods at the appropriate times 9

public void init ( ) n init() is the first method to execute n

public void init ( ) n init() is the first method to execute n n n init() is an ideal place to initialize variables init() is the best place to define the GUI Components (buttons, text fields, checkboxes, etc. ), lay them out, and add listeners to them Almost every applet you ever write will have an init( ) method 10

start( ), stop( ) and destroy( ) n start() and stop( ) are used

start( ), stop( ) and destroy( ) n start() and stop( ) are used when the Applet is doing timeconsuming calculations that you don’t want to continue when the page is not in front n n public void start() is called: n n n Right after init( ) Each time the page is loaded and restarted public void stop( ) is called: n n n These methods are not often used, but you should know about them When the browser leaves the page Just before destroy( ) public void destroy( ) is called after stop( ) n n Use destroy() to explicitly release system resources (like threads) System resources are usually released automatically 11

Methods are called in this order init() start() do some work stop() destroy() n

Methods are called in this order init() start() do some work stop() destroy() n n init and destroy are only called once each start and stop are called whenever the browser enters and leaves the page do some work is code called by your listeners paint is called when the applet needs to be repainted 12

public void paint(Graphics g) n Needed if you do any drawing or painting other

public void paint(Graphics g) n Needed if you do any drawing or painting other than just using standard GUI Components n n You never have to worry about redrawing standard GUI components; Java does all that automatically Any painting you want to do should be done here, or in a method you call from here Painting that you do in other methods may or may not happen Never call paint(Graphics), call repaint( ) 13

repaint( ) n Call repaint( ) when you have changed something and want your

repaint( ) n Call repaint( ) when you have changed something and want your changes to show up on the screen n n You do not need to call repaint() when something in Java’s own components (Buttons, Text. Fields, etc. ) You do need to call repaint() after drawing commands (draw. Rect(. . . ), fill. Rect(. . . ), draw. String(. . . ), etc. ) repaint( ) is a request--it might not happen When you call repaint( ), Java schedules a call to update(Graphics g) 14

update( ) n n When you call repaint( ), Java schedules a call to

update( ) n n When you call repaint( ), Java schedules a call to update(Graphics g) Here's what update does: public void update(Graphics g) { // Fills applet with background color, then paint(g); } 15

Sample Graphics methods n A Graphics is something you can paint on g. draw.

Sample Graphics methods n A Graphics is something you can paint on g. draw. String(“Hello”, 20); Hello g. draw. Rect(x, y, width, height); g. fill. Rect(x, y, width, height); g. draw. Oval(x, y, width, height); g. fill. Oval(x, y, width, height); g. set. Color(Color. red); 16

Painting at the right time is hard n n n When you modify common

Painting at the right time is hard n n n When you modify common components (JButtons, JLabels, JText. Fields, etc. ), Java keeps the screen display up to date When you paint on a Graphics object, you have to make your changes appear on the screen To help ensure your changes appear on screen, follow these rules: n n n Rule #1: Never call paint(Graphics g), call repaint( ) Rule #2: Do all your painting in paint, or in a method that is called from paint Rule #3: If you paint on any Graphics other than the Applet’s, call its update method from the Applet’s paint method Rule #4. Do your painting in a separate Thread These rules aren't perfect, but they should help If you follow these rules and the screen still doesn’t change, I probably won’t be able to find the problem, either : -( 17

Other useful JApplet methods n System. out. println(String s) n n n Works from

Other useful JApplet methods n System. out. println(String s) n n n Works from appletviewer, not from browsers Automatically opens an output window. show. Status(String s) displays the String in the applet’s status line. n n Each call overwrites the previous call. You have to allow time to read the line! 18

Applets are not magic! n n Anything you can do in an applet, you

Applets are not magic! n n Anything you can do in an applet, you can do in an application. You can do some things in an application that you can’t do in an applet. If you want to access files from an applet, it must be a “trusted” applet. Trusted applets are beyond the scope of this course. 19

Web pages n n Applets are designed to be run from a web page

Web pages n n Applets are designed to be run from a web page Web pages are written in a markup language called HTML (Hyper. Text Markup Language) n n Applets can be run directly from Eclipse, and you never have to see the HTML n n Any Java-enabled browser with the correct plugin can run applets However, this is no way to make a program available to other people! Hence, you should know at least a little HTML 20

Structure of an HTML page n HTML n HEAD BODY TITLE (content) Most HTML

Structure of an HTML page n HTML n HEAD BODY TITLE (content) Most HTML tags are containers. A container is <tag> to </tag> 21

HTML <html> <head> <title> Hi World Applet </title> </head> <body> <applet code="Hi. World. class"

HTML <html> <head> <title> Hi World Applet </title> </head> <body> <applet code="Hi. World. class" width=300 height=200> <param name="arraysize" value="10"> </applet> </body> </html> 22

The <applet> tag n n The <applet. . . >. . . </applet> tag

The <applet> tag n n The <applet. . . >. . . </applet> tag is what tells your browser to put an applet here <applet> has three required attributes: n n code="Hi. World. class" tells the browser where to find the code n Alternatively, if your code is in a. jar file, you can say archive="Hi. World. jar“ width="300" tells the browser how many pixels wide to make the applet window n A typical monitor resolution is 72 pixels/inch height="200" tells the browser how many pixels high to make the applet window In a browser, you cannot resize the applet; but in appletviewer, you can resize the applet 23

<param name="arraysize" value="10"> n You can put parameters in the HTML page, to be

<param name="arraysize" value="10"> n You can put parameters in the HTML page, to be read by the applet n n Parameters go between <applet> and </applet> All parameters are read by the applet as Strings To read a parameter, use the applet method public String get. Parameter(String name) Example: n n String s = get. Parameter("arraysize"); try { size = Integer. parse. Int (s) } catch (Number. Format. Exception e) {…} 24

The End 25

The End 25