Name: idR10193 Date: 11/20/2001
Spec for method "void addLayoutComponent(String name, Component comp)"
states: "Adds the specified component with the specified name to the
layout.". Actually component is not added after call to
addLayoutComponent(String, Component). Sample1 below demonstrates it.
One might think that you have to add component via call to methods of
Container but it is also impossible. None of methods of Container
that can take String as argument call this method of GridBagLayout,
see Sample2 and Sample3 below.
Sample code:
============addLC2.java (Sample1)===============================
import java.awt.*;
public class addLC2 {
public static void main(String argv[]) {
GridBagLayout gbl = new GridBagLayout();
Container parent = new Container();
parent.setLayout(gbl);
Component comp = new Component(){};
try {
parent.add("component", comp);
} catch (IllegalArgumentException iae) {
System.out.println("IllegalArgumentException thrown from " +
"parent.add(\"component\", comp);");
}
try {
parent.add(comp, "component");
} catch (IllegalArgumentException iae) {
System.out.println("IllegalArgumentException thrown from " +
"parent.add(comp, \"component\");");
}
System.out.println(gbl.minimumLayoutSize(parent));
gbl.addLayoutComponent("component", comp);
System.out.println(gbl.minimumLayoutSize(parent));
}
}
============ end of addLC2.java =========================
Output under JDK version "1.4.0-rc-b86" ===================
~/bugs
javac addLC2.java
~/bugs
java addLC2
IllegalArgumentException thrown from parent.add("component", comp);
IllegalArgumentException thrown from parent.add(comp, "component");
java.awt.Dimension[width=0,height=0]
java.awt.Dimension[width=0,height=0]
~/bugs
==================================================
============add.java (Sample2)===============================
import java.awt.*;
public class add {
public static void main(String argv[]) {
GridBagLayout gbl = new GridBagLayout();
Container parent = new Container();
parent.setLayout(gbl);
Component comp = new Component(){};
parent.add("component", comp);
}
}
============ end of add.java =========================
Output under JDK version "1.4.0-rc-b86" ===================
~/bugs
javac add.java
~/bugs
java add
Exception in thread "main" java.lang.IllegalArgumentException: cannot add to
layout: constraints must be a GridBagConstraint
at java.awt.GridBagLayout.addLayoutComponent(GridBagLayout.java:605)
at java.awt.Container.addImpl(Container.java:485)
at java.awt.Container.add(Container.java:313)
at add.main(add.java:12)
~/bugs
============add.java (Sample3)===============================
import java.awt.*;
public class add2 {
public static void main(String argv[]) {
GridBagLayout gbl = new GridBagLayout();
Container parent = new Container();
parent.setLayout(gbl);
Component comp = new Component(){};
parent.add(comp, "component");
}
}
============ end of add.java =========================
Output under JDK version "1.4.0-rc-b86" ===================
~/bugs
javac add2.java
~/bugs
java add2
Exception in thread "main" java.lang.IllegalArgumentException: cannot add to
layout: constraints must be a GridBagConstraint
at java.awt.GridBagLayout.addLayoutComponent(GridBagLayout.java:605)
at java.awt.Container.addImpl(Container.java:485)
at java.awt.Container.add(Container.java:348)
at add2.main(add2.java:12)
~/bugs
- relates to
-
JDK-4530310 call to Container.add(String, Component) leads to unexpected IAE
-
- Closed
-