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

Consulta sobre diseño de interfaces

Estas en el tema de Consulta sobre diseño de interfaces en el foro de Java en Foros del Web. Aprovecho una pregunta para los maestros, al hacer una aplicación normalmente tengo un panel con datos contacto (dirección, localidad, tlf, etc) y si necesito uno ...
  #1 (permalink)  
Antiguo 25/10/2006, 06:39
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Consulta sobre diseño de interfaces

Aprovecho una pregunta para los maestros, al hacer una aplicación normalmente tengo un panel con datos contacto (dirección, localidad, tlf, etc) y si necesito uno que tenga además nombre y apellidos, lo que hago es crear otro panel con el de contactos dentro y luego pongo los componentes extra que necesito

Uso netbeans, sería mucho más cómodo diseñar un formulario para cada cosa que necesite (lo que implica creear componentes repetidos entre paneles)... pero un compañero me dice que es una forma más "efectiva" y "limpia" de hacerlo, y aunque él la verdad es un "máquina" yo por otro lado pienso que para una aplicación normal no vale la pena "perder el tiempo" con estas cosas aunque lo tengas...

Qué piensan vds ?
  #2 (permalink)  
Antiguo 25/10/2006, 12:57
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Hola:

Va un poco en gustos y cual sea tu prioridad y el tipo de programa.

Lo de hacer muchos paneles con componentes repetidos puede ser rápido con una buena herramienta y siempre y cuando "muchos" paneles con componentes repetidos sean cuatro o cinco paneles con cuatro o cinco componentes cada uno.

Las ventajas de hacerlo como tú dices (yo también soy partidario de eso) es que reutilizas código. El código que crea y añade los componentes comunes de varios paneles está en un sólo sitio. Modificar o arreglar ese código es más rápido, sólo hay que tocar en un sitio. Imagina que te dice que en el JTextField donde metías dirección quieren ahora un JComboBox para elegir Avda, calle, plaza, etc, un JTextField para la dirección, otro JTextField para el portal y otro para el piso y otro para la letra. Está claro que tu compañero se pasará una noche cambiando una y otra vez el mismo código en muchos paneles mientras que tú lo liquidaras en un rato.

Existen también soluciones intermedias, como por ejemplo hacer un código al que le pases un Container y le añada los componentes comunes. Luego cada panel sólo tiene que llamar a ese código pasándose a sí mismo. Tienes así muchos paneles separados e independientes, pero el código en un sólo sitio.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 25/10/2006, 13:22
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Gracias por responder,

No me expliqué bien, era yo el que para una pequeña aplicación de 4/5 paneles prefería crear cada uno, con componentes repetidos.

Pero es cierto que del otro modo, si hay que modificar se modifica sólo en un sitio, y es una forma más "limpia" y eficiente.

El "problema" que le veo es que al crear un JPanel con los componentes comunes, cuando se crea otro añadiendo el primero, a la hora de alinear los componentes lo veo complicado.

Es decir, si el panel común tiene en una fila 3JLabel+3JTextField, p.ej., y en el que lo insertamos creas además 2JLabel+2JTextField, al configurar para que ambos tengan el mismo ancho, los componentes no quedan bien cuadrados en algunos casos.

Eso creandolos gráficamente con el NetBeans, que además si creas una clase que herede de otra que a su vez hereda de JPanel, no te permite editarla gráficamente...

Y no digamos ya si tenemos dos paneles y los incluimos en un tercero.

Lo que hacía antes con el JDeveloper era crear un panel con un GridBagLayout, definirlo digamos con 6 filas e insertar los componentes que consideraba comunes en las filas del medio, quedando filas arriba y abajo libres para insertar otros con código...

Gracias

PD: uno es bueno cuando le dejan serlo
  #4 (permalink)  
Antiguo 26/10/2006, 03:24
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Permíteme otra pregunta chuidiang,

Qué te parece el layout del netbeans 5 para este tema de reutilizar los paneles?, no es mejor usar el GridBagLayout ?... no si me haré algo mal pero a veces alguno de los que pongo aparte no consigo que me quede bien alineado con otro del panel heredado

Aparte de que si creas una clase y mediante código haces que herede de un panel, no permite editarlo gráficamente
  #5 (permalink)  
Antiguo 26/10/2006, 11:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Hola:

Bueno, yo soy un poco rupestre y nunca he usado un diseñador gráfico, siempre me hago las ventanas directamente en código. Si entiendes bien los layouts y usas el más adecuado en cada momento, tampoco se echa de menos.

Por otro lado, hace tiempo me hice varios paneles vacíos a medida, de forma que cubren casi todas mis necesidades de hacer formularios. Por ejemplo, tengo un panel con un método al que llamo asi

MiPanel p = new MiPanel();
p.anhadeComponente (unStringEtiqueta, unComponente);
p.anahdeComponente (otraEtiqueta, otroComponente);

Este panel tiene dentro un GridBagLayout y el voy añadiendo etiquetas y componentes y las coloca bien alineadas.

En un momento dado, el componente que añado detrás de la etiqueta puede ser un panel completo con más cosas y un BorderLayout y también queda bien alineado (es cuestión de quitarle márgen izquierdo al BorderLayout), etc, etc.

En fin, como ves es una solución intermedia. No construyo todos los paneles desde cero, pero si hago todos los que necesito más o menos independientes.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 26/10/2006, 12:04
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Al final he logrado hacerlo con el nb y su FreeLayout, lo de que algún componente no se alineaba lo solucioné con una opción que permite configurar el espaciado lateral.

Aún así no me gusta el tema de que si creas una clase que herede de un panel, no te permite editarlo gráficamente...

Muchas gracias
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 19:12.