Foros del Web » Programación para mayores de 30 ;) » Java »

Empezando con Swing

Estas en el tema de Empezando con Swing en el foro de Java en Foros del Web. Hola a todos. Pues os quería preguntar cuál es la mejor forma de trabajar al hacer ventanas con Swing. Por lo que se, lo mas ...
  #1 (permalink)  
Antiguo 14/01/2011, 14:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Empezando con Swing

Hola a todos.

Pues os quería preguntar cuál es la mejor forma de trabajar al hacer ventanas con Swing. Por lo que se, lo mas normal es crear una clase que extienda de JFrame, añadiendo en el constructor las características más básicas de la ventana (tamaño, salida de la aplicación al pulsar el botón de cierre, visibilidad de la ventana, etc). Pero lo que ya no tengo tan claro es si los componentes que se vayan a colocar en la ventana (paneles, gestores de diseño, y todos los componentes que se puedan colocar en los mismos, tales como botones, etiquetas, cuadros de texto, etc) han de colocarse también en el constructor o sería más adecuado crear métodos adicionales desde los cuales se añadieran dichos componentes a la ventana.

Por ejemplo, una opción a la hora de crear una ventana, podría ser, crear un constructor por parámetros para la misma, que reciba un número entero, y que, en función del valor recibido, genere un determinado tipo de ventana, llamando a un método concreto. No se si esto sería algo realmente útil o si por el contrario no tiene nada que ver con lo que normalmente se suele hacer.

Otra duda que tengo es lo que habría que hacer cuando tenemos una ventana en la que mediante un option button o algún componente similar, como una barra de menús, se establezcan distintas "versiones" de componentes para la misma, esto es, que tengamos una aspecto distinto en la ventana en función de la opción seleccionada, para realizar distintas funciones.

Bueno a ver si me podeis echar una mano para aclararme un poco.

Saludos.
  #2 (permalink)  
Antiguo 14/01/2011, 21:13
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Empezando con Swing

Hola,

Eso depende completamente del tipo de aplicación que quieras construir. No es específicamente sobre Java, en cualquier lenguaje de programación que tenga modo gráfico se suele seguir con el mismo método dependiendo de la aplicación.

Normalmente se suele construir toda la ventana en el constructor (valga la redundancia), porque es el momento en que se está creando el componente. Los editores como Netbeans o Visual Studio (en VB o C#) suelen crear un método privado y lo llaman desde el constructor, para separar la lógica de los editores visuales del código ingresado manualmente por el programador.

Y dependiendo del estado de la aplicación se crean nuevos componentes, se eliminan algunos o se habilitan o deshabilitan, pero eso depende del tipo de programa, una aplicación tipo 'asistente' normalmente usa una sola ventana donde cambia completamente el contenido dependiendo de los 'pasos' que lleva completados; pero un editor de textos mantiene todos los botones y componentes activos o deshabilita algunos dependiendo si son aplicables o no.

En el caso de las cajas de dialogo con opciones, normalmente están activos todos los botones pero se usan 'Tabbed Panels' donde se puede cambiar a otro estado dependiendo de las opciones que se están editando.

Al final depende de tu aplicación y el estilo que le quieras dar, inclusive si encuentras un método nunca visto mas eficiente, que sea útil, también es aceptable, como Microsoft Office 2007 y sucesores, donde se vio un cambio radical de la interfaz de usuario haciéndola mas simple de usar, y casi todo está visible y accesible todo el tiempo en la pantalla.

Normalmente también se usa el constructor porque tu formulario puede ser usado por otro programador, y tendría que llamar a un constructor y después a un método extra donde se inicializa todo, y seguramente se le va a olvidar hacer esa llamada y le va a tomar tiempo investigar porque sale la ventana vacía, igualmente puede estar bien documentado y hacer esa llamada a un método extra.

Un detalle final es que usar la instrucción 'this' como parámetro en el constructor no es buena práctica. En algunos casos no hay inconveniente, en otros es aconsejable no usarlo. NetBeans lo marca como 'código sospechoso' .

Saludos,
  #3 (permalink)  
Antiguo 14/01/2011, 23:03
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Empezando con Swing

Totalmente de acuerdo en lo que comenta HackmanC. Solo un detalle.

A mi no me gusta heredar de JFrame, prefiero heredar y construir las ventanas en un JPanel. Un JPanel (o clase hija de JPanel) puedes meterla en un JFrame, JDialog, JApplet, JInternalFrame o incluso dentro de otro JPanel. Un JFrame siempre es un JFrame, por lo que sería más costoso si de repente decides que esa ventana debería formar parte de otra más grande.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 15/01/2011, 06:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Empezando con Swing

Gracias a los dos por responder.

Ya mas o menos me hago una idea de como tengo que trabajar según las necesidades que se precisen.

Saludos.

Etiquetas: empezando, swing
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:01.