Netscape 3.0+ Java Bugs List

Please add your Netscape 3.0+ Java Bug to this collection!

Very Informally Maintained by Jeff Harrington


Here's a workaround I found for the Netscape 3.0+ resize problem:
Java World Tip #8

All Gif's are dithered, regardless of the actual system color depth.
Workaround:

Do a PixelGrab and re-create the image as a MemoryImage source-derived image. Here's some source posted recently to comp.lang.java.programmer:

//
// This code is put in the public domain by Ogilvy & Mather Interactive.
// O&MI makes no warranty as to its suitability for any application.
// In no event shall O&MI be liable for damages arising out of the use of or
// inability to use this code.  Use at your own risk.
//
// Written by Andrew Frank, afrank@ogilvy.com
//
import java.awt.*;
import java.awt.image.*;
import java.applet.*;
import java.net.URL;
import java.net.MalformedURLException;

public class bApplet extends Applet
{
    //
    //  get a buffered image (without dithering)
    //
    public Image getImage(URL url)
    {
        Image source = super.getImage(url);
        if (source == null) return(null);
        MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(source, 0);   // load the image
        try { tracker.waitForID(0); } catch (InterruptedException e) {}
        int width = source.getWidth(this);
        int height = source.getHeight(this);
        int pixels[] = new int[width*height];
        PixelGrabber grabber = new PixelGrabber(
                source, 0, 0, width, height, pixels, 0, width );
        try { grabber.grabPixels(); } catch (Exception e) {}
        mem = new MemoryImageSource(width, height, pixels, 0, width);
        return(createImage(mem));
    }
    public Image getImage(URL url, String name)
    {
        try {
            return getImage(new URL(url, name));
        } catch (MalformedURLException e) { return null; }
    }
}
---- snip ----
Instructions:

Step 1.  Compile this and put the resulting class file somewhere in your
CLASSPATH (preferably in the same directory as the applet you're
building).

Step 2.  Modify the applet which you want to stop dithering by adding a 
line near the top that says "import bApplet;", and changing the
declaration which says "public class myApplet extends Applet" to say
..."extends bApplet".

Step 3.  Recompile your applet.

That's it!  Why does it work?  Not sure yet, but Sun is looking into it.

My only request is that you not remove the comments from the top of the
source code if you copy or distribute it.

Please send feedback to afrank@ogilvy.com or afrank@panix.com.

Andrew Frank
Director of Technical Design
Ogilvy & Mather Interactive
309 W 49 St NY NY USA
1-212-237-5071/1-212-237-4138 (fax)
afrank@ogilvy.com
http://www.ogilvy.com



Problem with threads; don't use join().
Runtime.runFinalization() and Runtime.gc() introduces system flakiness.
Comp.lang.java Postings of 11/1/96

Alexandre Rafalovitch (alex@access.com.au) wrote:
1) Broken static communication in the case that should work (falls under David's rules)
2) Milky-White screen, when applets of size 0*0 or 1*1 are present.
3) White lines around applets (this might be Win95/VideoCard combo dependant, because I have problems with reproducing them)


Robert Temple wrote:
4) Memory Leaking with discarded images. My DynamicBillboard applet which is used by many people now leaks a lot of memory under Netscape 3.0 on Windows95/NT. It works just fine under Netscape 2.0, MSIE, and the JDK appletviewer. This is extremely frustrating. Especially since Netscape doesn't seem to read any of the detailed bug reports I send them.
-Robert Temple
robertt@starwave.com

From Netscape 3.01 Release Notes

Jeff:This is the same list of bugs for 3.0!

Java Bugs:

  • If you can't start Java applets, make sure Java is turned on in Options|Network|Languages.
  • The APPLET tag must have WIDTH and HEIGHT attributes.
  • Win 32bit build for NT & 95: Insets for layout manager is wrong for adding and removing menubar.
  • There is a new implementation of AWT. This new implementation propagates more user events to more types of components than the JDK AWT. This can cause some programs to misbehave if they are written incorrectly.
  • Mouse-up events are not implemented if the pointer leaves the applet window.
  • The Dialog class is not yet implemented.
  • Java requires at least a 256 color video driver. If you want to use the Navigator with less than 256 colors, Java must be disabled.
  • The Java Console window has a limit to the amount of text it can display. Once the window fills up, it must be cleared before new text will appear.
  • In order for a Date object to display the time-zone (ie. PST) the TZ environment variable must be set (for both NT and Win95).

    Jeff: These are the bugs they claim they fixed in 3.01 - which, incidentally, were never listed in the known bug list of 3.0!

  • Downloaded Java zip files are always removed from the user's temp directory.
  • In Java, threads are no longer able to detect other threads that are outside the ThreadGroup containing the currentThread().
  • In Java, a classpath entry of "." is translated into an absolute current directory during startup.
  • A number of bugs in the Windows implementation of AWT for Java were fixed, including a memory leak when drawing some images.
  • Javascript-generated frames no longer have a limit of 100 frames that can be opened throughout a window's history.
    "Choice" component will not change foreground or background color.
    Dan Nigrin, Boston, MA, USA


    Here's a WWW page about a Netscape Palette Bug
    The java.awt.Choice component does not appear to be supported in Netscape on either Sun or Windows platforms. The same components appear fine in Internet Explorer and in the native Sun virtual machine, however the same code results in objects the remain unverified even when verify() is called in Netscape's VM.
    Steve Morgan, Melbourne, FL


    /**
      
    clnt.java
    */ 
    import java.io.*;
    import java.net.*;
    
    public class clnt {
            public static final int DEFAULT_PORT=4000;
            public static void usage() {
                    System.out.println ("Usage: java clnt  []");
                    System.exit(0);
            }
    
            public static void main (String [] args) {
                    int port = DEFAULT_PORT;
                    Socket s = null;
    
                    if ((args.length != 1) && (args.length !=2)) usage();
                    if (args.length == 1) port = DEFAULT_PORT;
                    else {
                            try {port = Integer.parseInt(args[1]);}
                            catch(NumberFormatException e) {usage();}
                    }
                    try {
                            s = new Socket (args[0], port);
                            DataInputStream in = new DataInputStream (s.getInputStream());
    
                            while (true) {
                                    String line = in.readLine();
                                    System.out.println (line);
                            }
                    } catch (IOException e) { System.err.println (e); }
                    finally {
                            try {
                              if (s!=null) s.close();
                            } catch (IOException e2){}
                    }
            }
    }
    

    ,


    If the server(svr) is run using netscape "-java" option. Closing the client socket by "killing" the client(clnt) program while the server thread is asleep, i.e. doing something else then try to write to a closed socket, will cause netscape to bomb!!! Netscape didn't catch/throw IOException.
    /**
       @author Yew Kuan Choo
       Program: clnt.java
    */ 
    import java.io.*;
    import java.net.*;
    
    public class clnt {
            public static final int DEFAULT_PORT=4000;
            public static void usage() {
                    System.out.println ("Usage: java clnt  []");
                    System.exit(0);
            }
    
            public static void main (String [] args) {
                    int port = DEFAULT_PORT;
                    Socket s = null;
    
                    if ((args.length != 1) && (args.length !=2)) usage();
                    if (args.length == 1) port = DEFAULT_PORT;
                    else {
                            try {port = Integer.parseInt(args[1]);}
                            catch(NumberFormatException e) {usage();}
                    }
                    try {
                            s = new Socket (args[0], port);
                            DataInputStream in = new DataInputStream (s.getInputStream());
    
                            while (true) {
                                    String line = in.readLine();
                                    System.out.println (line);
                            }
                    } catch (IOException e) { System.err.println (e); }
                    finally {
                            try {
                              if (s!=null) s.close();
                            } catch (IOException e2){}
                    }
            }
    }
    
    /** 
      @author: Yew Kuan Choo
      Program: svr.java 
    */
    import java.io.*;
    import java.net.*;
    
    public class svr extends Thread {
            public final static int DEFAULT_PORT = 4000;
            protected int port;
            protected ServerSocket listen_socket;
    
            public static void fail(Exception e, String msg) {
                    System.err.println (msg + ":" + e);
                    System.exit(1);
            }
    
            public svr (int port) {
                    if (port == 0) port = DEFAULT_PORT;
                    this.port = port;
                    try { listen_socket = new ServerSocket (port); }
                    catch (IOException e) {fail (e, "Exception creating svr socket");}
                    System.out.println ("Svr: listening on port " + port);
                    this.start();
            }
    
            public void run() {
                    try { while (true) {
                            Socket clnt = listen_socket.accept();
                            Connection c = new Connection (clnt);
                          }
                    } catch (IOException e) { fail (e, "Error While listening");}
            }
    
            public static void main (String [] args) {
                    int port = 0;
                    if (args.length == 1) {
                            try {port = Integer.parseInt(args[0]);}
                            catch (NumberFormatException e) {port = 0;}
                    }
                    new svr (port);
            }
    }
    
    
    class Connection extends Thread {
            protected Socket clnt;
            protected DataInputStream in;
            protected DataOutputStream out;
    
            public Connection (Socket clnt) {
                    this.clnt = clnt;
                    try {
                            in = new DataInputStream (clnt.getInputStream());
                            out = new DataOutputStream (new BufferedOutputStream(clnt.getOutputStream()));
                    } catch (IOException e) {
                            try {clnt.close();} catch (IOException e2)
                                    { System.err.println ("Connection : " + e2); }
                            return;
                    }
                    this.start();
            }
    
            public void run() {
                    try {
                            for (int i=1; i <= 10; i++) {
                                 out.writeBytes ("Line " + i + "\n"); out.flush();
                            }
                    } catch (IOException x) {
                            System.err.println ("Error writting");
                    }
                    try { Thread.sleep (3000);} catch (InterruptedException ie) {}
                    PrintStream prn = new PrintStream (out, true);
                    for (int i=100; i < 120; i++) {
                        prn.println ("Line : " + i);
                        if (prn.checkError()) {
                            System.err.println ("Error writting to socket");
                            break;
                        }
                    }
                    try {
                            for (int i=200; i <= 210; i++) {
                                 out.writeBytes ("Line " + i + "\n"); out.flush();
                            }
                    } catch (IOException x) {
                            x.printStackTrace();
                    } catch (IOException t) {
                            t.printStackTrace();
                    }
                    try { clnt.close(); } catch (IOException e2) {}
            }
    }
    

    Yew K. Choo, College Station, Tx, USA


    IndexColorModel doesn't work properly

    The colors returned by the IndexColorModel routines in the Mac version of Netscape 3.0 are in the range -127 to 128 instead of 0 to 255. The following applet demonstrates this behavior and shows a work-around. A related bug associated with handling the transparency appears on the Unix version of Netscape 3.0 as well. Although not demonstrated in this applet, this same work-around applies.

    /*
     * This small applet demonstrates a bug in the handling of
     * IndexColorModel's in Netscape 3.0. Two color bars, varying from
     * red to blue, with increasing opacity, going left to right. When
     * the bug is present, the left bar is nearly all black. If not, the two
     * bars will be identical.
     *
     * Author: Daren Stotler, dstotler@pppl.gov
     */
    import java.awt.*;
    import java.awt.image.*;
    import java.util.*;
    import java.applet.Applet;
    
    public class TestNSCM extends Applet {
    
      private int barHeight, barWidth;
      private Image imgICM, imgDCM;
    
      public void init() {
    
    /*
     * Set up "hotMetal" IndexColorModel with increasing opacity.
     */
        int numColors = 40;
        byte alpha[] = new byte[256];
        byte red[] = new byte[256];
        byte green[] = new byte[256];
        byte blue[] = new byte[256];
        for (int i=0; i < numColors; i++) {
          alpha[i] = (byte) ((255*i) / (numColors-1));
          red[i] = (byte) ((255*i) / (numColors-1));
          blue[i] = (byte) ((255*(numColors-1-i)) / (numColors-1));
          green[i] = (byte) 0;
        }
        IndexColorModel icm = new IndexColorModel(8,numColors,red,green,blue,alpha);
    /*
     * Generate the two bar images.
     */
        barHeight = 50;
        barWidth = 150;
        int bar_icm[] = new int[barWidth * barHeight];
        int bar_dcm[] = new int[barWidth * barHeight];
        int index = 0;
        int value = 0;
        for (int y=0; y
    
     
    
    Daren Stotler, Princeton, New Jersey, USA


    The rules for IAC as formulated by David Hopwood a while ago were wrong. The real rules are different when the documents are in different directories and are like this. Thanks to David Hopwood for reformulating the rules to be more correct. Applets A and B use the same ClassLoader if (A and B have the same CODEBASE) && ((A and B have the same ARCHIVE tag) || (neither A nor B have an ARCHIVE tag, and they have the same document base)) && ((neither A nor B have a MAYSCRIPT tag) || (both A and B have a MAYSCRIPT tag, and they are in the same frame).

    Alexandre Rafalovitch, Sydney, Australia


    It seems that the z-order (front to back), at least for components added in applets with Symantec's Vis-Cafe, is reversed in Netscape relative to the Vis-Cafe internal applet viewer. For instance, if a panel with a filled rectangle behind it is not visible when the applet runs in Netscape, moving the panel behind the rectangle makes the panel become visible. johnn@metabridge.com 2/12/97
    John Nelson, Seattle WA USA


    If you load a gif89 image that doesn't use transparency, Netscape Java may choose a color (usually black) to be transparent. Workaround: Convert your gif89 images to gif87 format. At least it's smart enough to recognize that gif87's don't support transparency.
    Carl Muckenhoupt, New York, NY, USA


    Wayne Holder maintains a Buglets page:
    http://www.2nu.com/Wayne/Buglets/Index.html
    The following code will produce an identical image under IE, but a mis-colored (and dithered) image under Netscape:

       Image imageOriginal = createImage( width, height );
       // DO SOME DRAWING ONTO imageOriginal HERE
       Image imageCopy = createImage( imageOriginal.getSource() );
    

    I have a tiny 20-line applet which demonstrates this, with source code, at http://www.electrum.co.uk/gary/bugger. Please drop by and take a look if you think this might affect you, or better still if you think you might know of a workaround.

    Gary McGill
    mailto:gary@electrum.co.uk
    http://www.electrum.co.uk
    In the applet tag, using ALIGN=RIGHT or ALIGN=LEFT lays out the screen correctly, but no applet appears. I've experienced this in Linux and on Suns, while it works fine for Win95. Does anyone care to verify this?
    agove@ix.netcom.com (Andrew Gove), Pittsburgh, PA USA


    Netscape 3.0+ doesn't cache to disk java zip files (those referred by ARCHIVE attribute) which are larger than 64K. The consequence of this is that any serious applet doesn't cache and has to be downloaded every time you try to run it. Very annoying and highly unproductive!
    Samo Pitamic, Ljubljana, Slovenia


    An applet that runs on Netscape 3.0 under Windows 95 and expects text input, does not allow one to type special characters that require several keystrokes (e.g. an alt-0133 sequence, or a sequence of ^ and e to get e-circumflex. This bug does not occur under Windows NT. What good is Java if these eternal character matters are not even solved? Do we never learn anything from history?
    Geert Adriaens, Antwerp, Belgium


    http://ciir.cs.umass.edu/cgi-bin/hirsch/3.0.2/java_query This runs a CGI that sends HTML with an APPLET tag. On all Netscape / Unix that I have tried, the Applet starts and works properly. On PC or Mac Netscape and on PC MSIE either the Applet fails to load at all or runs improperly, one of two ways. Clicking a line in a single-select List is supposed to get for you the named document, but on PC does nothing, apparently the Applet is never told about the click. Clicking line(s) in multiple-select List is supposed to give program SELECT events but only works under Unix. The spec seems unclear on this so I just got rid of it, and use clicks into a visual mapping instead. Happy to provide source code if it helps. Any suggestions most welcome! (I did not want to be a pioneer.)
    Morris Hirsch, Amherst MA USA


    http://ciir.cs.umass.edu/cgi-bin/hirsch/3.0.2/java_query This runs a CGI that sends HTML with an APPLET tag. On all Netscape / Unix that I have tried, the Applet starts and works properly. On PC or Mac Netscape and on PC MSIE either the Applet fails to load at all or runs improperly, one of two ways. Clicking a line in a single-select List is supposed to get for you the named document, but on PC does nothing, apparently the Applet is never told about the click. Clicking line(s) in multiple-select List is supposed to give program SELECT events but only works under Unix. The spec seems unclear on this so I just got rid of it, and use clicks into a visual mapping instead. Happy to provide source code if it helps. Any suggestions most welcome! (I did not want to be a pioneer.) oh I forgot my address hirsch@cs.umass.edu
    Morris Hirsch, Amherst MA USA


    MOUSE_DRAG events generated with incorrect X & Y co-ordinate. Unexpected MOUSE_EXIT event generated when the component is resized. Frame.setCursor() doesn't act in time - changing time uncertain
    Ashis Sarkar, Quincy, MA, USA


    getDocumentBase() seems to only when connected to the net. this means that even if I have all my data on my Hardrive, it still won't load it unless I actually connect to the net. I should be able to test my applets without having to log in every time ie: they should run off an html document stored an my H.D. (It may be getDocumentBase() is the problem) Tony Swain Calgary Alta. Canada
    Tony Swain, Calgary,Al;ta.,Canada


    Netscape Error: Unable to start a java applet. Can't find java_30 in your CLASSPATH. Read the Release notes and install "java_30" properly before restarting. Current value of CLASSPATH: (null)
    Can't find java_30, Brighton, Colorado USA


    This is not realy a bug but whene craeting a tabel in HTML with a big big picture a copple of times...whene login to this url win95,nt,and any UNIX machine swap file will keep expnading until some one press stope . this can be viwed on http://infolabwww.kub.nl:2080/infolab/people/hoppie/wah.html
    Erez Rusovsky, kiryat mozkin , Israel , Isreal


    In an applet, calling setLabel on a MenuItem from an AWT component's action method does strange things in Netscape 3.01 for Windows '95. An example can be found at . Try modifying the menu label more than once. It will eventually crash Netscape, but not Windows.
    Ken Warkentyen, Lausanne, Switzerland


    TextArea's when run in Netscape move the cursor to the bottom of text inside them when you do call .setText(String textIn. Sun's Appletviewer leaves the cursor on top. I was trying to make a console class by extending TextArea, and that made it difficult to show the most recent line first.
    Matt Walsh, Chicago, IL USA


    Modal dialog boxes don't work under Netscape -- on any version! MSIE handles them quite happily. This makes producing any real kind of application difficult.
    Simon Cooke, Manchester, UK


    Sending a redraw event to an Canvas and removing it from its parent just after that cause a runtime error in the MFC40 (Microsoft Fundation Class) for Netscape 3.01 under Windows 95 (seems to work under NT4)
    Stephane Boisson, France


    On MacIntosh Netscape Navigator, I cannot get the applet to draw to the screen unless I use the paint method and call it with repaint(); It appears that getGraphics() doesn't work. For example, on WIN95 I can call my paint method as follows: paint(getGraphics()); The above gives no response on the MAC. Note: this happens for any function I try to call to draw on the screen.
    Bill Hardin, Syracuse NY, USA


    This is confirmed in Netscape 3.0x and 4.0x. When responding to handleEvent, pressing Control-Backspace will result in the correct modifiers value, but the key field will contain the value of 127. All other key combinations using the backspace key wil l have the correct keycode of 8. This does not occur under IE 4.0. The following code can be used to show the events that are returned and verify the problem:
    //******************************************************************************
    // KeyPress.java:	Applet
    //
    //******************************************************************************
    import java.applet.*;
    import java.awt.*;
    import java.util.*;
    
    //==============================================================================
    // Main Class for applet KeyPress
    //
    //==============================================================================
    public class KeyPress extends Applet
    {
    	String[]	text;
    	Hashtable	lookup;
    	static final int numTexts = 14;
    
    	// KeyPress Class Constructor
    	//--------------------------------------------------------------------------
    	public KeyPress()
    	{
    		// TODO: Add constructor code here
    		int	index;
    		text = new String[numTexts];
    		for (index = 0 ; index < numTexts ; ++index)
    			text[index] = null;
    		lookup = new Hashtable();
    		lookup.put(new Integer(Event.KEY_ACTION), "KEY_ACTION");
    		lookup.put(new Integer(Event.KEY_ACTION_RELEASE), "KEY_ACTION_RELEASE");
    		lookup.put(new Integer(Event.KEY_PRESS), "KEY_PRESS");
    		lookup.put(new Integer(Event.KEY_RELEASE), "KEY_RELEASE");
    		lookup.put(new Integer(Event.MOUSE_DOWN), "MOUSE_DOWN");
    		lookup.put(new Integer(Event.MOUSE_DRAG), "MOUSE_DRAG");
    		lookup.put(new Integer(Event.MOUSE_ENTER), "MOUSE_ENTER");
    		lookup.put(new Integer(Event.MOUSE_EXIT), "MOUSE_EXIT");
    		lookup.put(new Integer(Event.MOUSE_MOVE), "MOUSE_MOVE");
    		lookup.put(new Integer(Event.MOUSE_UP), "MOUSE_UP");
    	}
    
    	// APPLET INFO SUPPORT:
    	//		The getAppletInfo() method returns a string describing the applet's
    	// author, copyright date, or miscellaneous information.
        //--------------------------------------------------------------------------
    	public String getAppletInfo()
    	{
    		return "Name: KeyPress\r\n" +
    		       "Author: Larry Widing\r\n" +
    		       "Created with Microsoft Visual J++ Version 1.1";
    	}
    
    
    	// The init() method is called by the AWT when an applet is first loaded or
    	// reloaded.  Override this method to perform whatever initialization your
    	// applet needs, such as initializing data structures, loading images or
    	// fonts, creating frame windows, setting the layout manager, or adding UI
    	// components.
        //--------------------------------------------------------------------------
    	public void init()
    	{
            // If you use a ResourceWizard-generated "control creator" class to
            // arrange controls in your applet, you may want to call its
            // CreateControls() method from within this method. Remove the following
            // call to resize() before adding the call to CreateControls();
            // CreateControls() does its own resizing.
            //----------------------------------------------------------------------
        	resize(320, 240);
    
    		// TODO: Place additional initialization code here
    	}
    
    	// Place additional applet clean up code here.  destroy() is called when
    	// when you applet is terminating and being unloaded.
    	//-------------------------------------------------------------------------
    	public void destroy()
    	{
    		// TODO: Place applet cleanup code here
    		text = null;
    	}
    
    	// KeyPress Paint Handler
    	//--------------------------------------------------------------------------
    	public void paint(Graphics g)
    	{
    		int	index;
    		for (index = 0 ; index < numTexts ; ++index)
    		{
    			if (text[index] != null)
    				g.drawString(text[index], 10, 15 + (index * 15));
    		}
    	}
    
    	//		The start() method is called when the page containing the applet
    	// first appears on the screen. The AppletWizard's initial implementation
    	// of this method starts execution of the applet's thread.
    	//--------------------------------------------------------------------------
    	public void start()
    	{
    		requestFocus();
    	}
    	
    	//		The stop() method is called when the page containing the applet is
    	// no longer on the screen. The AppletWizard's initial implementation of
    	// this method stops execution of the applet's thread.
    	//--------------------------------------------------------------------------
    	public void stop()
    	{
    	}
    
    	public boolean handleEvent(Event evt)
    	{
    		String msg = null;
    
    		switch (evt.id)
    		{
    			case Event.KEY_ACTION:
    			case Event.KEY_ACTION_RELEASE:
    			case Event.KEY_PRESS:
    			case Event.KEY_RELEASE:
    				msg = "Event: " + evt.id + ", " + evt.modifiers + ", " + evt.key + " (" + (String)lookup.get(new Integer(evt.id)) + ")";
    				addText(msg);
    				repaint();
    				System.out.println(text);
    				break;
    
    			case Event.MOUSE_DOWN:
    			case Event.MOUSE_DRAG:
    			case Event.MOUSE_ENTER:
    			case Event.MOUSE_EXIT:
    			case Event.MOUSE_MOVE:
    			case Event.MOUSE_UP:
    				msg = "Event: " + evt.id + ", " + evt.modifiers + ", " + evt.clickCount + " (" + (String)lookup.get(new Integer(evt.id)) + ")";
    				addText(msg);
    				repaint();
    				System.out.println(text);
    				break;
    		}
    
    		return super.handleEvent(evt);
    	}
    
    	void addText(String msg)
    	{
    		int	index;
    
    		for (index = 0 ; index < numTexts ; ++index)
    		{
    			if (text[index] == null)
    			{
    				text[index] = msg;
    				return ;
    			}
    		}
    		for (index = 0 ; index < numTexts - 1 ; ++index)
    		{
    			text[index] = text[index+1];
    		}
    		text[numTexts - 1] = msg;
    	}
    }
    

    Larry Widing, Naperville, IL


    I tried to have the user select dynamically from a choice of the JDK 1.0 and 1.1 versions of my company's software depending on the system property "java.version". This works fine in Sun's appletviewer, using an auxiliary applet which checks this property and sets the enabled state of the button which launches the 1.1 version appropriately. It doesn't work correctly with Netscapes's Communicator 4.01 which returns "1.1[...]" for "java.version", but doesn't know any of the new classes added in JDK version 1.1. Did anyone have to solve this sort of problem? Please send a short message to ManfredMueller@mps-software.de, subject: "java.version".
    Manfred Müller, Regensburg, Germany


    I have problem with loading Images in Netscape 3.0. Gold. A small Images are 
    loaded correctly. Bigger are loaded correctly only in Intranet. Large Images may
    occurs error while loading also in Intranet(sometimes). In MSIE 3.0. or 4.0. all
    Images are loaded correctly(in Internet or Intranet). I try to load Image in two ways:
    
    ///With help of a class MediaTracker:
     int pocet=0;
     boolean abbruch;
     do
     {
       pocet++;
       abbruch=false;
       image = getImage (getCodeBase(), string);
       mt.addImage (image, 0);
       try 
       {
         mt.waitForId(0);
       } 
       catch (InterruptedException e) 
       {
         abbruch=true;
         image.flush();
         showStatus("Error - interrupted "+String.valueOf(pocet));
       }
       if (mt.isErrorID(0)) // here is detected an error
       {
         abbruch=true;
         image.flush();
         showStatus("Chyba - pri loadovani obrazku cislo"+String.valueOf(pocet));
       }
     } while (pocet < 4 && abbruch);
    ///The error was detected in function mt.isErrorID(0).
    ///Applet try to load image in 3 loops but without succes.
    ///The image has 27 kB size. After loading cca 20 - 30 kB during
    ///my modem this the MadiaTracker stopped loading.
    
    ///With help of function prepareImage:
      boolean kenner=this.getToolkit().prepareImage(image,-1,-1, this);
      int pocet=0;
      do
      {
        pocet++;
        test=this.getToolkit().checkImage(image, -1, -1, this);
        try{Thread.sleep(500);} catch(InterruptedException ie) {;}
        showStatus("test= "+String.valueOf(test)+"  testujem kazdych "+String.valueOf(pocet/2)+" sekund");
        if (0!= (test & ERROR) ) break; // here is detected an error
      } while (0== (test & ALLBITS) && pocet < 2000);
    ///The situation is the same as in upper example.
    ///After loading 20- 30 kB checkImage return ImageObserver.ALLBITS
    ///and thread for loading is stopped.
    

    Milan Baric, Bratislava, Slovakia


    Recent sightings:
    
    WIN95 - Net4/IE4 - (Java 1.1.x) - copyArea method fails to 'copy'
    in all 4 possible directions.  Only 2 are supported.  The deltaX
    and deltaY directions _MUST_ be negative.  Positive values will
    effectively 'tile' the 'copiedArea' along that axis.  Using:
    
    g.drawImage(TENbyTEN,0,0,null);  // draw image in upper left
    g.copyArea(0,0,200,200,10,0);    // tile the image accross the top
    g.copyArea(0,0,200,200,0,10);    // tile the top row of images down
    
    It's a >>Great<< way to tile a background screen with the image of
    your choice.  Is it a bug or a feature?  User beware! ONLY currently
    works under Net4/IE4 on WINDOWS95!
    
    MAC - (OS?) - Net? -  Reports that the following code will produce
    an error when trying to use the parseInt method to parse a negative
    valued string.  Try this:
    
    string test = "-123";
    int testnum = Integer.parseInt(test);
    
    This appears to be only MAC related at this point in time.  PC users
    are safe for now.
    
    *** END Special Report ***
    sab@cruzio.com, SAB's GAME ARCADE

    If you want to display a bigger image to a smaller place using drawImage(x,y,width,height,...), it dosen't work at all! Any solution? plz send your mail to safyway66@hotmail.com. Thanks!
    James, CA,USA


     
    /**
    * This applet shows how buggly browsers dies
    * Just press button one or two times 
    *
    * @author Vladislav Protasov. mailto:vladp@novavox.ru
    * @version 1.0, 12 Feb 1999
    */
    import java.applet.Applet;
    import java.awt.*;
    
    public class NetscapeKiller extends Applet
    {
      Button killer=new Button("Kill Netscape!");
    
      public void init()
      {
        add(killer);
      }
    
      public boolean action(Event  evt, Object  what)
      {
        postEvent( new Event( killer, Event.ACTION_EVENT, null ) );
        return true;
      }
    }
    

    Vladislav Protasov, Saint-Petersburg, RUSSIA


    ,,
    .., ..



    ROBERT E HERTEL SR, CARPENTERSVILLE ILL KANE



    ,



    Florentina Debreczeni, Evans, Georgia,USA



    Marc Asselin, Qc,Qc,St-tite-des-CAps


    Not sure what I'm doing here, but I threw away my Netscape Gold 3.0 when I "upgraded" to Netscape 4.7. Now I am kicking myself because the 3.0 worked a whole lot better than the 4.7. I'm hoping that I can get 3.0 back again by clicking here. I don't need all the hoopla that comes with 4.7. Thanks a lot, Rebecca
    Rebecca Wolfe, Shaw Island, WA, USA


    Not sure what I'm doing here, but I threw away my Netscape Gold 3.0 when I "upgraded" to Netscape 4.7. Now I am kicking myself because the 3.0 worked a whole lot better than the 4.7. I'm hoping that I can get 3.0 back again by clicking here. I don't need all the hoopla that comes with 4.7. Thanks a lot, Rebecca
    Rebecca Wolfe, Shaw Island, WA, USA



    gerardo guerrero rodriguez, d.f,mexico,mexico


    nquiles@teleline.es
    Nicolas Quiles Bautista, Yecla,Murcia,España


    When loading an applet, it gives an error sometimes saying, java.lang.NullPointerException at java.lang.StringBuffer.append(Compiled Code) * at netscape.applet.DerivedAppletFrame$LoadAppletEvent.dispatch(Compiled Code) at java.awt.EventDispatchThread$EventPump.dispatchEvents(Compiled Code) at java.awt.EventDispatchThread.run(Compiled Code) at netscape.applet.DerivedAppletFrame$AppletEventDispatchThread.run(Compiled Code) I am using Netscape 4.5 version. Sameer sameer@liqwidkrystal.com
    Sameer Pokarna, Bangalore, Karnataka, India



    yavuz, izmir



    Kaarel Tooming, Tallinn, Estonia



    ,



    Wladimir, Valencia Carabobo Venezuela



    naser, uae



    Marisa Gonzalez, Barcelona, Spain



    J Pérez, Barcelons Spain



    ,


    2
    2, 2



    ,


    if you want, in an applet, to convert a string like that "83.00" in the corresponding float, the command Float.valueOf("83.00").floatValue() or even new Float("83.00").floatValue() works perfectly under internet explorer but bugs in netscape 4.5 => NumberFormatException It could be dut to the point . in place of comma , ????
    jean francois, france



    janusz wlodyka, linden nj. usa



    ,


    SCRIPT ERRORS WYLE LOADING
    ALVAROGONZALEZ, BOGOTA COLOMIA



    ,



    ,



    ,



    Sheila Lindroth, Plano, TX, USA



    john isitt, edmonton, AB


    http://orbita.starmedia.com/~bolero
    jose gonzalez, maturin



    ahmed shawky, cairo



    ,



    ,



    carlos amen, mexico


    zczczczcz
    XX, xXXXXxzxzxz



    ,



    alex, goshen,Indiana

    I don't understand anything of this mumbo-jambo. How do I work off line with Netscape 3.0? Please be mercifull and send me an answer to: ulfsandberg49@hotmail.com Thank you!
    Ulf Sandberg, Uppsala, Uppland, Sweden