sábado, 28 de julio de 2007

Un extraño pack() en Frame ??

Esto va con relación al post anterior.

Al parecer Java hace alguna especie de pack() interno, o al menos he descubierto que es el software de programación y no yo quien es responsable de que mi botón se muestre del tamaño de la ventana y no como yo lo asigno.

No voy a citar imágenes ni códigos pasados porque el presente revela lo que quiero mostrar a la luz. Para esto basta analizar este pequeño código en el constructor de una clase extends Frame:

Button button = new Button("Heisann");
button.setBackground(Color.MAGENTA);

add(button);
setBackground(Color.CYAN);
setTitle("Hols!");
setSize(256, 256);
button.setSize(64, 64);
System.out.println(button.getSize());
setVisible(true);
System.out.println(button.getSize());



y lo que me tira la consola:


[nekrobyte@localhost Prueva]$ javac Prueva.java
[nekrobyte@localhost Prueva]$ java Prueva
java.awt.Dimension[width=64,height=64]
java.awt.Dimension[width=246,height=226]
[]


Ahh, el último [] que puse es para representar al cursor cuadrado que indica dónde se va a insertar el próximo caracter, en realidad no había nada pero es que si tampoco pongo nada siento que no dejo las cosas muy en claro ;-)

Tengo que ver qué hago con eso porque no confío mucho en asignar las propiedades a todos mis controles en el futuro después de abrir el telón.

3 comentarios:

  1. Anónimo11:20 p.m.

    No entiendo, por que no das las soluciones?

    ResponderBorrar
  2. Planteo enigmas. Cuando escribía esto aún no lo sabía, ahora que lo leo, tampoco.

    ResponderBorrar
  3. Anónimo1:45 a.m.

    esto pasa por el layout por default que trae ese container, para que no ocurra debes establecer el layout en null, para qe respete tus ordenes...saludos

    ResponderBorrar