Listing 3: xy.java
package sun.net.www.content.image;

import java.net.*;
import java.io.*;
import java.util.StringTokenizer;
import java.awt.*;
import java.awt.image.*;

public class xy extends ContentHandler
   {
   
   private Color colorchooser(int c)
   {
   switch(c){
                case 0:
                return (new Color(0,0,0));
      
                case 1:
                return (new Color(255,0,0));
      
                case 2:
                return (new Color(0,0,255));
      
                case 3:
                return (new Color(0,255,0));

               case 4:
               return (new Color(255,255,255));
      
               default :
               return (new Color(112,112,112));
              }      
   }

   public Object getContent(URLConnection URLconn)
       {
       String line="";
       InputStream IS=null;
       BufferedReader BR=null;      
       int W=0;
       int H=0;
       int c1=0;
       int c2=0;
       Color color1=null;
       Color color2=null;
       int[] RGB=new int[0];
       int element=-1;
       int X=0;
       int Y=0;       
            
       try{
          IS=URLconn.getInputStream();
          BR=new BufferedReader(new InputStreamReader(IS));
                  
          while(line.trim().equals("")){line=BR.readLine();}
                                
          if(line!=null)
            {
            StringTokenizer ST=new StringTokenizer(line,"|");
            W=Integer.valueOf(ST.nextToken());
            H=Integer.valueOf(ST.nextToken());
            RGB=new int[W*H+1];
            }
          else
            {
            System.out.println("Unknown file type - *.xy");
            }
          
          line=BR.readLine();
         
          if(line!=null)
            {
            StringTokenizer ST=new StringTokenizer(line,"*");
            c1=Integer.valueOf(ST.nextToken());
            ST.nextToken();
            c2=Integer.valueOf(ST.nextToken());
            color1=colorchooser(c1);
            color2=colorchooser(c2);
            X=color1.getRGB();
            Y=color2.getRGB();                      
            }
           else
            {
            System.out.println("Unknown file type - *.xy");
            }  
            
             while((line=BR.readLine())!=null)
             {
             if(line.indexOf("<!--")==-1)
                {
                StringTokenizer ST=new StringTokenizer(line,"-");
                int contor=Integer.valueOf(ST.nextToken());                
                String s=ST.nextToken().trim();
                if(s.equalsIgnoreCase("x"))
                     for(int i=0;i<contor;i++)
                        RGB[++element]=X;                    
                 if(s.equalsIgnoreCase("y"))
                     for(int i=0;i<contor;i++)
                        RGB[++element]=Y;                            
                 if((!s.equalsIgnoreCase("x"))&&(!s.equalsIgnoreCase("y")))                         
                    {
                    System.out.println("Error...");
                    break;
                    }
                 }
             }
          BR.close();
              
          }catch(IOException e)
               {System.out.println(e.getMessage());}
                     
           MemoryImageSource mis=new MemoryImageSource(W,H,RGB,0,W);
           return mis;
     
      }
}

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.