Tamaño de componentes...

que tal aqui vengo con otra duda mas..esto de java ya se me esta haciendo bastante complicado alguna veces.. no se por que a veces funciona bien a veces no.. :(

la cuestión es la siguiente. tengo un JFrame (mi ventana principal) y dentro de ese tengo dos JPanel dividos por la mitad..
y para que ello suceda.. el obtengo el tamaño del JFrame y lo divido en dos para darle tamaño de ancho a mi JPanel el alto le pongo uno genérico de todas formas el Layout se encarga de modificar , ya que mi ventana inicia maximizada.pero lo que me interesa es la mitad..

pues bien hasta ahí todo funciona..
el problema radica en lo siguiente.. dentro de uno de los JPanel meter otro JPanel de mismo ancho y una altura definida..

la cuestión es que me devuelve a cero el ancho del panel y lo hace por que el tamaño lo tenia de esta manera..

panelizquierdo.setPreferredSize(
new java.awt.Dimension((this.getSize().width)/2,600));

y al obtener. panelizquiero.getSize().width
me da cero
pero en cambio si le pongo al panel izquiero esta forma

panelFunciones.setSize(
new java.awt.Dimension((this.getSize().width)/2,600));

ahi si me devuelve su tamaña correctamente..

pregunto entonces en que consiste poner PreferredSize y Size..

yo creía que el primero era para definir el tamaño deseado en base a un layout y que ese era un tamaño definido que luego podria cambiar en base a los cambios y al layout y setSize.. pienso que se utiliza para IMPONER un tamaño definido sin importar el layout y los cambis de ventana..

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Eso depende del Layout

Creo que utilizar prefrerred, minimum, maximum o sólo size depende completamente de lo que quieras lograr en un determinado layout, así por ejemplo si usas un flowlayout el preferred te serviría para que el componente no ocupe todo el espacio del contenedor, sino solo la fracción que le has puesto.
Creo yo que todos te sirven para definir el tamaño, el chiste es ver bajo que circunstancias debe definirse.

Imagen de genitalico

entiendo.. en realidad uso

entiendo.. en realidad uso BorderLayout y supongo que no sirve preferred para ese layout por que no me devuelve el tamaño puesto aun que si lo hace esto es raro o yo soy el que no entiende...

alguien sabrá cuando y para que layouts se usa cada cual? por ejemplo me he dado cuenta que NetBeans en cualquiera de los layouts usa preferredSize pero supongo que es algo genérico..