¿Por qué está mal visto utilizar un diseño nulo en Swing?
Recientemente comencé a crear un programa para la empresa para la que trabajo. Solo como información general, todavía soy un estudiante y un programador principiante, por lo que mi solución probablemente no sea recomendada y no sabía cómo hacerlo de otra manera, pero funciona y no seré juzgado por ello porque Es un trabajo de estudiante que no tiene ninguna relación con la programación.
Lo que pasa con el programa es que se ejecutará en varias computadoras diferentes con diferentes tamaños de pantalla y resoluciones (800x600 y superiores). Para asegurarme de que ocupe la mayor parte posible de la pantalla sin perder ninguna parte del programa, configuré el diseño en nulo y codifiqué todo usando valores relativos.
El programa es de estilo quiosco y primero obtengo los valores del tamaño de la pantalla y voy desde allí (por ejemplo, desde la parte superior de mi cabeza, el menú del lado izquierdo ocupa una octava parte de la pantalla, la barra superior el 2%, etc.) . También utilizo métricas de fuentes para asegurarme de que los componentes tengan el tamaño correcto y que todo se muestre bien.
Mi pregunta es: ¿por qué está tan mal visto hacer que el diseño sea nulo en lugar de utilizar los administradores de diseño? (Me dijeron en algunos foros que esta es una forma horrible de hacer las cosas). Sé cómo funciona el administrador de diseño y sé cómo usar los diferentes diseños, pero para los requisitos de este programa (múltiples resoluciones diferentes, formas y ubicaciones de botones personalizados). , texto que cambia en los componentes cuando cambias de idioma, etc.), no me veía usando los administradores de diseño para hacerlo todo.
¿Cómo utilizan los programadores más experimentados los administradores de diseño en una situación como esta? ¿Y qué haces cuando quieres que un botón esté en algún lugar específico y otros componentes en otro lugar específico que realmente no coincidan con ninguno de los diseños predefinidos?
En pocas palabras: porque todo el trabajo que explicas arriba lo hace (o al menos: debería hacerlo) el administrador de diseño.
La mayoría de las veces, cuando se utiliza un diseño nulo, también implica que todas las posiciones y tamaños están codificados en un único valor, por lo que no se ofrece ninguna flexibilidad. Esto significa que los cambios en el tamaño de la ventana, el idioma, el tamaño de fuente, la densidad de visualización o cualquier otro parámetro relacionado no tienen ningún efecto en el diseño y se obtienen los desagradables efectos habituales: partes vacías de la ventana; listas pequeñas e irrealizables; botones con sus etiquetas cortadas; ...
Parece que el trabajo que usted hace debería ser realizado por el Administrador de diseño. Busque uno que haga eso (mi sugerencia personal sería MiGLayout , que hace mucho y es fácil de usar) o escriba el suyo propio.
Prácticamente estás utilizando un diseño propio, con todos tus sofisticados cálculos de posiciones.
Puede mover esta lógica a una clase de administrador de diseño personalizado para apaciguar a los críticos.
Hmmmm, el truco debería ser mezclar LayoutMangers y usar una cantidad de JPanels anidados , cada uno de los cuales podría tener un diseño diferente o no, realmente depende de la cantidad de JComponents , lo que le permite crear una GUI que se ve como si estuviera diseñada usando AbsoluteLayout pero con el mismo aspecto. salida a la GUI para cada resolución y relación de pantalla (4:3, 16:9, 16:10)