Example output from the client program after it has successfully received an
image from the server is shown in Fig. 11.1 .
Fig. 11.1 Displaying a
received image on a JFrame
An alternative to displaying the image directly onto the application frame is to
make use of an overloaded form of the JLabel constructor that takes an Icon 'object'
as its single argument. Icon is an interface that is implemented by class ImageIcon ,
making an ImageIcon object also an Icon 'object'. Thus, the only changes that need
to be made to the client code above are as follows:
declare the JLabel object;
use new to create the above JLabel , supplying the ImageIcon as the argument to
add the JLabel to the application frame;
remove the call to repaint ;
remove the re-defi nition of paint .
Example (of lines that need to be added)
JLabel imageLabel; //Amongst initial declarations.
imageLabel = new JLabel(image);
The resultant output will be virtually identical to that shown in Fig. 11.1 .
Transferring Media Files
Unfortunately, there is no Serializable sound class corresponding to the ImageIcon
class for images, so we need a different transfer method for sound fi les. One viable
method involves transferring the fi le as an array of bytes (which is Serializable ,
since it is a stream of primitive-type elements). This method can also be applied to
graphics fi les, which means that we can use the same method to transfer fi les that
may be of mixed types. In some applications, this is likely to be very useful.
Adopting a client-server approach again, the steps required at each end of the trans-
mission will be considered in turn…