Workaround for setting background color for Java frame in Safari

As detailed at this link, in MacOS 10.4 and 10.5 there are issues with setting the background color of a Frame popped up from a Java applet.  A workaround is to add to the Frame a panel with the desired background color, as illustrated in the applet below. 

If you have any insights, workarounds or comments about this test page please contact Mickey Segal.  A listing of  many Java resources is at this link.

Source code:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class control_back extends Applet implements WindowListener {

Frame frame;
Label label;

public void init()
{
    frame = new Frame("A frame");
    frame.setLayout(new GridBagLayout());
    frame.setBounds(100, 100, 600, 300);
    Panel panel = new Panel();
    panel.setBackground(Color.yellow);
    constrain (frame, panel, 0, 0, 1, 1, GridBagConstraints.CENTER, 0, 0, 0, 0, GridBagConstraints.BOTH, 1, 1);
    label = new Label("Some random label");
    panel.add(label);
    frame.validate();
    frame.show();
    frame.addWindowListener(this);
}

static final void constrain(Container container, Component component, int grid_x, int grid_y,
    int grid_width, int grid_height, int anchor, int topPad, int leftPad, int bottomPad,
    int rightPad, int fill, double weightx, double weighty)
{
    GridBagConstraints c = new GridBagConstraints();
    c.gridx = grid_x;
    c.gridy = grid_y;
    c.gridwidth = grid_width;
    c.gridheight = grid_height;
    c.anchor = anchor;
    c.insets.top = topPad;
    c.insets.left = leftPad;
    c.insets.bottom= bottomPad;
    c.insets.right = rightPad;
    c.fill = fill;
    c.weightx = weightx;
    c.weighty = weighty;
    ((GridBagLayout)container.getLayout()).setConstraints(component, c);
    container.add(component);
}

public void windowOpened(WindowEvent we){}

public void windowClosed(WindowEvent we){}

public void windowIconified(WindowEvent we){}

public void windowDeiconified(WindowEvent we){}

public void windowActivated(WindowEvent we){}

public void windowDeactivated(WindowEvent we){}

public void windowClosing(WindowEvent we)
{
    if (we.getSource() == frame)
    {
        frame.setVisible(false);
        frame.dispose();
    }
}

public void paint(Graphics g)
{
    g.drawString("A frame should pop up", 10 , 20);
}
} // END OF Class control_back