Artículo
|
Swing y JFC (Java Foundation Classes) |
Problemas con el Controlador de Distribución
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.
Comentarios
Últimas noticias
Últimos artículos
















































