InternalError: couldn't create component peer - AWT Applet refresh
Hi,
I've got the simplest of Mickey-Mouse AWT dialogue boxes created from an
Applet that is now returning the following error when I refresh the page
(i.e. first time through everything is peachy): -
java.lang.InternalError: couldn't create component peer
at sun.awt.windows.WComponentPeer.checkCreation(Unknown Source)
at sun.awt.windows.WComponentPeer.<init>(Unknown Source)
at sun.awt.windows.WCanvasPeer.<init>(Unknown Source)
at sun.awt.windows.WPanelPeer.<init>(Unknown Source)
at sun.awt.windows.WWindowPeer.<init>(Unknown Source)
at sun.awt.windows.WFramePeer.<init>(Unknown Source)
at sun.awt.windows.WEmbeddedFramePeer.<init>(Unknown Source)
at sun.awt.windows.WToolkit.createEmbeddedFrame(Unknown Source)
at sun.awt.windows.WEmbeddedFrame.addNotify(Unknown Source)
at java.awt.Window.pack(Unknown Source)
at tier3Client.Tier3Logon.<init>(Tier3Logon.java:67)
at tier3Client.Tier3Session$Connection.open(Tier3Session.java:352)
at tier3Client.Tier3Session.checkIn(Tier3Session.java:680)
at tier3Client.Tier3Application.init(Tier3Application.java:96)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
As you can see below the triggering code is a simple "pack": -
package tier3Client;
import java.awt.*;
import java.awt.event.*;
import tier3Client.Tier3ClientException;
final class Tier3Logon extends Dialog
implements ActionListener
{
Label headr = new Label("Server Authentication Required"
, Label.LEFT);
Label user = new Label("Username:", Label.RIGHT);
Label pass = new Label("Password:", Label.RIGHT);
TextField inUser = new TextField(40);
TextField inPass = new TextField(40);
Button okay = new Button("OK");
Button cncl = new Button("Cancel");
Checkbox cb = new Checkbox("Display logon confirmation",true);
boolean logonAborted = false;
protected Tier3Logon(Frame dFrame)
{
super(dFrame,"Tier3 Logon",true);
setBackground(Color.white);
headr.setFont(new Font("Helvetica", Font.BOLD, 14));
inPass.setEchoChar('*');
Panel top = new Panel();
top.setLayout(new GridLayout(1, 2, 8, 2));
top.add(headr);
top.add(cb);
add("North", top);
Panel pc = new Panel();
pc.setLayout(new GridLayout(2, 2, 8, 2));
pc.add(user);
pc.add(inUser);
pc.add(pass);
pc.add(inPass);
add("Center", pc);
okay.addActionListener(this);
cncl.addActionListener(this);
Panel pb = new Panel();
pb.add(okay);
pb.add(cncl);
add("South", pb);
setBounds(200, 210, 300, 300);
pack();
setResizable(false);
setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() == cncl)
logonAborted = true;
setVisible(false);
}
}
I have the same code working/refreshable elsewhere and the only differences
that stand out are that in that case it's all done from the Applet's init()
method, and in this case Tier3Logon forms part of a static class variable.
For the working example see: -
http://manson.vistech.net/t3$examples/demo_client_flex.html
Username: TIER3_DEMO
Password: QUEUE
Anything a bit more helpful than "InternalError"?
Cheers Richard Maher
BTW. I"ve juggled things around a bit and the error still occurs but is now
on the setVisible(true) method.
PS. I understand AWT is not the sexiest or most modern toolkit on the planet
but I'd appreciate it if we could stick with it for the sake of the example.