Exercises

Modify the WrapText applet so that it optionally accepts FONT, SIZE and STYLE PARAMs which set the font face, point size and style in which the String is drawn. Be sure to gracefully handle the case when the APPLET tag does not include any or all of these PARAMs or includes invalid values (e.g. STYLE="UNDERLINE").

The default StringTokenizer used by the WrapText applet breaks words on white space, i.e. spaces, tabs, newlines and carriage returns. Make it more intelligent about choosing line breaks. In particular let it break a line on a hyphen and have it jump to the next line (i.e. end a paragraph) on a newline or a carriage return. To do this you'll need to use a different StringTokenizer constructor, specifically StringTokenizer(String s, String delimiters) where s is the String to tokenize and delimiters is a String that contains all the characters you want to break on.

If the String won't fit in the applet, even after breaking into pieces, shrink the font size so that it does fit. What's the smallest font size you can use?

Add labeled coordinate axes to the SineApplet graph. Make sure they adjust if the applet is resized.

Modify the SineApplet so that it looks for xmin, xmax, ymin, and ymax to be specified via parameters. However for robustness if the author of the HTML forgets to specify them, supply some reasonable default values. You will probably need to make these member variables rather than local variables.