AbsoluteLayout

eduardo
22 de Julio del 2009
Hola estoy creando un frame con el layout AbsoluteLayout de NetBeans, pero me da una serie de errores al introducir en el frame algun tipo de componente.
A continuacion pongo el codigo para ver si alguien me dice que estoy haciendo mal.

Frame f=new Frame();
Panel p=new Panel();
Label l1,l2;
l1=new Label();
l2=new Label();
f.setLayout(new FlowLayout());
p.setLayout(new AbsoluteLayout());
f.add(p);
p.add(l1);
p.add(l2);
f.show();

Este codigo lo estoy ejecutando desde el metodo void main y el error que me da es el siguiente:

java.lang.IllegalArgumentException
at org.netbeans.lib.awtextra.AbsoluteLayout.addLayoutComponent(AbsoluteLayout.java:128)
at java.awt.Container.addImpl(Container.java:664)
at java.awt.Container.add(Container.java:307)
at miproyecto.NewEmpty.main(NewEmpty.java:25)
Exception in thread "main"

Haber si alguien me hecha una mano porque no se porque no funciona si creo que lo estoy haciendo correctamente.

Gracias de todos modos.

elektrobeat
22 de Julio del 2009
El problema está en las lineas:
p.add(l1);
p.add(l2);
ya que deben de llevar un especificador de coordenadas para cada Component agregado a un Contenedor, en este caso en un JPanel,
deben de quedar de la siguiente forma:

int x1=0;
int y1=0;
int x2=100;
int y2=100;

p.add(l1, new AbsoluteConstraints(x1,y1,-1,-1));
p.add(l2, new AbsoluteConstraints(x2,y2,-1,-1));

NOTA: estoy usando " -1 " como tercer y cuarto argumento de AbsoluteConstraints para indicarle que respete el ancho y el largo que ya tienen las etiquetas "l1 y l2"