CARVIEW |

Java in a Nutshell
Examples
The Java programming examples shown here are from the book
Java in a Nutshell
,
by David Flanagan, published by O'Reilly & Associates.
The examples were written by David Flanagan, and are Copyright (c) 1996
by O'Reilly and Associates. You may study, use, and modify these
examples for any purpose excerpt for monetary gain.
If you use the source code or applets on your web page, please
acknowledge the source:From "Java in a Nutshell," by David Flanagan. (c) 1996 O'Reilly & Associates, Inc.They are provided with NO WARRANTY express or implied.
You may also download the complete set of examples as a zip file or as a compressed tar file or as a gzipped tar file. Note that a number of the examples here, particularly those in Section 5, do not stand alone--they rely on other examples from the book or on images from subdirectories. Thus, if you want to experiment with the examples, I recommend that you download the entire distribution by ftp, rather than downloading the examples one at a time through your Web browser.
A Note on Bugs and Portability
The example code here has all been tested on my platform. That means that it will probably, but not necessarily, run on your platform--Java is still not as portable as it should be, and there are still buggy implementations out there. If you have trouble with any of these examples, please first try to figure out the problem, and then send e-mail to bookquestions@ora.com. In your e-mail, please be sure to mention what platform you're using (i.e. what type of computer, what version of the operating system, and what vendor and version of Java you are using.) If you have found a workaround to the problem on your platform, please include it so we'll be able to share that workaround with others who have the same problem. You might also want to submit a bug report to the vendor of your Java environment.The Examples
The examples from the book are all below. Each one has a short description, and a link that will take you to the source code. In addition, there are links that will allow you to run most of the applet examples directly. Enjoy!
David Flanagan
April 5th, 1996
Example 1-2
Scribble -- an applet of intermediate complexity, used as an example in the introductory chapter. Click and scribble in the window.view source code run the applet
Example 2-3
throwtest -- an application that demonstrates how to define, throw, and handle exceptions. This application doesn't do anything other than print out some text, but if you might want to study it and play around with it to learn more about how exceptions work in Java. See the usage instructions in the source code.view source code
Example 4-1
FirstApplet -- the simplest possible applet; displays "Hello World".view source code run the applet
Example 4-2
SecondApplet -- a fancier version of Hello World.view source code run the applet
Example 4-3
Scribble -- a simple applet with user interaction. Click and scribble in the window. This applet cannot refresh itself.view source code run the applet
Example 4-4
EventTester -- play with the mouse and keyboard in this window. It will tell you what events are generated.view source code run the applet
Example 4-5
ColorScribble -- the scribble applet in color. The colors are specified by tags in the HTML file, and are read by the applet code.view source code run the applet
Example 4-6
ClearableScribble -- we add a Clear button to the basic Scribble applet.view source code run the applet
Example 4-7
Imagemap -- an example of a simple client-side imagemap implmented in Java.view source code run the applet
Example 4-8
Animator -- simple animation in Java.view source code run the applet
Example 4-9
AudioAnimator -- play a sound and animate.view source code
Example 4-10
StandaloneScribble -- an applet converted to run as a standalone Java application.view source code
Example 5-1
InfoDialog -- a dialog box with a message and an Okay button. Suitable for inclusion in applications or applets.view source code
Example 5-2
YesNoDialog -- a dialog box with a message and two buttons with configurable text. Suitable for inclusion in applications or applets. This example won't run by itself; it must be used within some other application or applet, like Example 5-5.view source code
Example 5-3
ReallyQuitDialog -- a subclass of the previous example; asks if the user really wants to quit. Suitable for inclusion in applications or applets. This example won't run by itself; it must be used within some other application or applet, like Example 5-5.view source code
Example 5-4
AllComponents -- a big window with an example of each kind of GUI component supported by Java. Note: This examples relies on many of the other examples in this section, including Example 5-6, which has portability problems on some platforms. See Example 5-6 for details.view source code
Example 5-5
AllEvents -- a subclass of the previous example that shows how to handle events from each of the GUI components.Note: This examples relies on many of the other examples in this section, including Example 5-6, which has portability problems on some platforms. See Example 5-6 for details.view source code
Example 5-6
ScrollableScribble -- an example of working with scrollbars. This class was used in Example 5-4 and Example 5-5. Note that there are some portability problems with this example (that may also effect examples 5-4 and 5-5.)- On Java ports that are still based on the JDK beta 1 release, certain Scrollbar methods aren't defined, and this example won't compile or run correctly.
- One user (Scott Gartner) of Symantec Cafe on a Windows platform has reported that he has had to change the code of this example to get it to work correctly. You can download his version below. The problem seems to have to do with the coordinate system in which mouse events are reported.
view source code workaround for Cafe
Example 5-7
MultiLineLabel -- an example of creating a custom GUI component. This is the multi-line label component used in the dialog boxes of examples 5-1 and 5-2.view source code
Example 6-1
FileViewer -- reads the contents of a specified file and displays them in a window.view source code
Example 6-2
FileLister -- reads the contents of a directory and displays them. Double clicking on an item displays the file or directory contents.view source code
Example 6-3
FileCopy -- copy a file. Like Unix cp or DOS copy.view source code
Example 6-4
GrepInputStream -- an example of subclassing FilterInputStream to do custom filtering.view source code
Example 6-5
Grep -- an example of using a FilterInputStream subclass.view source code
Example 6-6
Pipes -- a complicated but rewarding example of using pipes in Java.view source code
Example 7-1
Fetch -- this example demonstrates how you can use the URL.getContent() method to download plain text files (but not HTML or other kinds of text files). Invoke this program with the URL of a text file as its only argument. If you use a file: URL, you may have to give the file a .txt extension so the system recognizes it as a plain text file.This example also contains a fetchimage() method that uses URL.getContent() to download images in GIF and other common file formats. You can use the separate FetchImageTest class to demonstrate the use of the fetchimage() method.
These plain text and image fetching examples rely on "content handlers" internal to the Java implementation. They work on JDK systems, but may not work on other Java implementations, if those implementations do not include the appropriate content handlers. If you attempt to download a file with an unsupported content type, the example will generate an exception and exit.
Note that this example is intended only to demonstrate the use of
URL.getContent(). In general, this is not the best way
to load text or image files over the net. See Applet.getImage(), for
example.
view source code
view source code for the FetchImageTest class that demonstrates image fetching
Example 7-2
GetURLInfo -- demonstrates how to obtain more information about a URL, and how to have more control over downloading the contents of the URL.view source code
Example 7-3
UDPSend -- send a datagram.view source code
Example 7-4
UDPReceive -- receive a datagram.view source code
Example 7-5
Server -- a server that can accept connections from any number of clients. This example provides the service of reversing the characters on each line it reads and sending the reversed lines back.view source code
Example 7-6
Client -- an example client to work with the previous example.view source code
Example 7-7
AppletClient -- a client implemented as an applet. You cannot directly run this applet here because the server (Example 7-5) is not running. To test this applet, bear in mind that for reasons of applet security, the server must be running on the same machine that the applet is loaded from.
A number of people have reported having trouble getting this example to
work, and I have not been able to diagnose the problem. The applet does
at least work with the Linux port of the 1.0.1 JDK, when both the server
and applet are running on the local machine. If this applet does not
work for you, it may be that your Java implementation is at fault.
Networking is one of the areas in which Java is not yet as portable as
it should be.
view source code
Example 8-1
Smooth -- demonstration of techniques for smooth animationview source code run the applet
Example 8-2
Animator2 -- a better animator applet. Uses MediaTracker.view source code run the applet
Example 8-3
GrayButton -- an example of image processing with the RGBImageFilter class.view source code run the applet
Example 9-1
ThreadLister -- list all the threads and threadgroups running in the interpreter.view source code
Example 9-2
AppletThreadLister -- an applet version of the previous example.view source code run the applet
Example 9-3
Server -- another Server example with more sophisticated thread usage.view source code
Example 9-4
Client -- another client example also with more sophisticated thread usage.view source code
oreilly.com Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies | Privacy Policy
© 2001, O'Reilly & Associates, Inc.