Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/07/2009, 10:46
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: cómo modificar tamaño FlowLayout o BorderLayout?

Hola:

No estaría de más que pusieras qué es pPrincipal y dónde lo pones.

Si metes cualquier componente dentro de otro componente que tiene un Layout, ese layout se encarga de dar tamaño y posición al componente, por lo que llamar a setSize(), setBounds() o cualquier otra variante no sirve de nada. El layout llamará después a los mismos métodos poniéndoles el tamaño que quiera.

Sin embargo, el layout tiene cierta "cortesía" con los componentes y antes de fijarles un tamaño, les pregunta por su getPreferredSize() y lo respeta, siempre que el tamaño de la ventana y la naturaleza del layout lo permitan.

Si quieres que un componente tenga un tamaño determinado dentro de un layout, lo más seguro es heredar de dicho componente y sobreescribir el método getPreferredSize() para que devuelva lo que tú quieras. Si en vez de heredar llamas a setPreferredSize(), puede funcionar o no, dependiendo del componente. Algunos, en su getPreferredSize() devuelve lo que le has pasado en su setPreferredSize(). Otros (como los paneles o componentes más complejos), en su getPreferredSize() echan unas cuentas con su contenido para decidir cual es su tamaño adecuado.

Otra opción sin heredar que también puede funcionar es llamar a setMinimumSize() y setMaximumSize(), haciendo que ambos sean el tamaño que quieres. El Layout también consulta getMinimumSize() y getMaximumSize() para ver qué tamaño da al componente y normalmente, los componentes, si devuelven en los get lo que les pasas en los set.

Se bueno.
__________________
Apuntes Java
Wiki de Programación