Al hacer invisibles los componentes individuales de un diseño gestionado por GridBagLayout, la disposición de los componentes restantes en el diseño cambia constantemente. GridBagLayout parece "colapsar" celdas con componentes invisibles, lo que hace que otros componentes cambien de posición. Este es un comportamiento muy molesto, y he estado buscando una forma de evitar que haga eso.GridBagLayout: cómo evitar que se colapsen los componentes invisibles
Un método que he intentado es agregar un separador a la misma celda, con un tamaño fijo igual al tamaño preferido del componente que puede estar oculto, pero si ese tamaño preferido alguna vez cambiara, sería un montón de problemas para mantener el espaciador sincronizado. ¿Hay una manera mejor?
En realidad, no sería tan malo si GridBagLayout ignorara por completo las celdas con componentes invisibles, pero aún tiene en cuenta las inserciones de la celda, así que si tiene un diseño de campos de entrada y usa las inserciones perfectamente colóquelos con espacios regulares entre ellos, luego, ocultando un componente en el medio lo elimina del diseño, pero deja el espacio, lo que generalmente significa que los componentes circundantes fluyen juntos, pero con un feo doble ancho entre ellos ...
Ah viejo Gridbaglayout con sus limitaciones, cómo no te echo de menos (pero voy a seguir este hilo de todos modos;) – Anders
Conozco el GridBagLayout durante años, y todavía a veces puedo pasar grandes cantidades de tiempo buscando las causas el comportamiento de colapso. Intente agregar un componente grande, por ejemplo, una etiqueta con mucho texto. A continuación, cambie el tamaño de su contenedor GridBagLayout'ed a un ancho inferior al tamaño preferido de la etiqueta ... Esto es tan extraño – Timmos