springlayout - swing java layout
GroupLayout: ¿Vale la pena aprender? (5)
Soy relativamente nuevo en Java (específicamente swing) y recientemente he estado haciendo algunas aplicaciones bastante simples, aprendiendo sobre la marcha. El último tiene muchos componentes de formularios como JLabels, JTextFields, JButtons, etc. Todos fueron ubicados en NetBeans usando un generador visual. Debo decir que realmente no estoy usando NetBeans y que realmente he estado diseñando la GUI y copiando el código directamente a Eclipse.
Mi pregunta es: ¿vale la pena entender muy bien GroupLayout y codificar a mano (y por lo tanto tener más control sobre mi GUI) o simplemente continuar como está?
GroupLayout
realmente no fue diseñado para la codificación manual; es mucho, mucho más detallado que cualquier otro administrador de diseño (excepto posiblemente GridBagLayout
). Como dice que es nuevo en Swing, sugiero comenzar con los administradores de diseño básicos ( BorderLayout
y FlowLayout
); puede usarlos en NetBeans haciendo clic derecho en el panel o marco y seleccionando "Establecer diseño". Después de que estés familiarizado con ellos, te sugiero que revises MiGLayout
.
Para responder a su otra pregunta: creo que el diseñador de formularios NetBeans es similar a una calculadora; es una herramienta maravillosa si ya conoces los conceptos básicos, pero nunca aprenderás nada si solo lo usas como una muleta.
Diría que vale la pena tomarse un tiempo para entender GroupLayout
solo porque siempre es una buena idea entender lo que está haciendo su IDE. Saber lo que sucede detrás de escena realmente te hace más flexible, porque si terminas en una situación en la que no tienes acceso a Netbeans, sabrás cómo replicar el diseño que habría producido para ti. Además, después de haber obtenido una buena cantidad de experiencia, probablemente terminará ahorrando tiempo en general. A menudo puede desarrollar una GUI simple más rápido a mano que utilizando un editor visual, especialmente teniendo en cuenta el tiempo que le lleva copiar y pegar el código de Netbeans a Eclipse.
Y, por supuesto, aprender cómo usar GroupLayout
a mano también facilitará la transición a cualquiera de los otros administradores de diseño que Java ofrece, lo que a su vez puede conducir a un código más simple e incluso ahorrar más tiempo.
La mayoría de los administradores de diseño más complicados no están destinados a ser codificados a mano. Puedes hacerlo, pero es probable que tengas problemas para entender tu propio diseño dentro de unos meses. GroupLayout no es una excepción, peor no es para nada intuitivo, tienes que contorsionar tu mente forzando tu diseño en términos de GroupLayout.
En mi opinión, estos administradores de diseño no valen la pena aprender. GridBagLayout es el peor de todos. Tiene más opciones de las que posiblemente pueda imaginar y nunca parecen hacer lo que cree que hacen. MiGLayout es muy potente, razonablemente intuitivo y, en general, hace lo que crees que es, pero seguiré argumentando que es demasiado poderoso y complicado para él y para el propio programador. GroupLayout no es tan poderoso, no es tan intuitivo y no vale la pena.
Mi consejo durante años de diseñar la GUI de Java y mantenerlos es aprender y usar el administrador de diseño más poderoso que puedas dominar en dos horas y que nunca olvidarás, luego diseña tu GUI con contenedores anidados usando este administrador de diseño y el básico BorderLayout / GridLayout / FlowLayout / BoxLayout.
GroupLayout
vale la pena aprender a usar programáticamente.
Uso GroupLayout
como mi diseño predeterminado en casi todos los paneles que creo, que usa componentes Swing estándar. Encuentro que los resultados siempre son muy agradables a la vista y cambian de tamaño muy bien. Siempre configuré estas opciones:
groupLayout.setAutoCreateGaps(true);
groupLayout.setAutoCreateContainerGaps(true);
El uso repetido de este diseño no solo me ha dado diseños geniales, sino que me proporciona la experiencia de bajo nivel necesaria para poder armar algunos paneles complicados con una cantidad de componentes desconocidos en tiempo de compilación. También descubrí que cuando el número de componentes es dinámico, puedo diseñar todos los componentes y luego activarlos y desactivarlos con setVisible(boolean)
sin setVisible(boolean)
a setVisible(boolean)
grupos horizontales y verticales.
Si te inclinas a un estilo de programa de VB, pasas tiempo en GroupLayouts. De lo contrario, intente comprender GridBagLayout Manager con ejemplos adecuados. Es lo mejor para aquellos que quieren que cada componente de GUI esté bajo nuestro control de lápiz (debemos escribir y no el IDE). Un buen desarrollador de java debe pasar tiempo en objetos de interfaz gráfica de usuario y objetos comerciales y debe saber cómo separarlos. L.Sankaranarayanan.