Problema:�C�mo puedo especificar el tama�o exacto de un componente?
- Primero, aseg�rate de que realmente necesitas seleccionar el tama�o exacto del componente. Los componentes estandards tienen distintos tama�os, dependiendo de la plataforma donde se est�n ejecutando y de la fuente utilizada, por eso normalmente no tiene sentido especificar su tama�o exacto.
Para los componentes personalizados que tienen contenidos de tama�o fijo (como im�genes), especificar el tama�o exacto tiene sentido. Para ellos, necesitamos sobreescribir los m�todos minimumSize() y preferredSize() del componente para devolver su tama�o correcto.
Nota: No insporta c�mo especifiquemos el tama�o de nuestro componente, debemos asegurarnos de que el contenedor de nuestro componente utiliza un controlador de distribuci�n que respeta las peticiones de tama�o del componente. Los controladores FlowLayout y GridBagLayout usan los tama�os preferidos de los componentes (dependiendo de las restricciones activadas), pero BorderLayout y GridLayout normalmente lo no hace. El controlador BoxLayout generalmente usa el tama�o preferido del componente (aunque los componentes pueden ser m�s grandes) y es el �nico controlador de distribuci�n que respeta el tama�o m�ximo del componente.
Si especificamos un nuevo tama�o para un componente que ya est� visible, necesitamos invocar al m�todo revalidate sobre �l, para asegurarnos de que todo el arbol de herencia tambi�n se ha revalidado. Luego llamamos al m�todo repaint. |
Problema:Mi componente personalizado se dibuja demasiado peque�o.
- �Has implementado los m�todos preferredSize() and minimumSize() del componente? Si lo has hecho, �devuelven los valores correctos?
- �Est�s utilizando un controlador de distribuci�n que puede utilizar todo el espacio disponible? Puedes ver Reglas Generales para el Uso de Controladores de Disposici�n para ver algunas situaciones de elecci�n del controlador de distribuci�n y especificar que utilice el m�ximo espacio disponible para un componente particular.