Uso correcto del GridLayout?
Hola publico de nuevo un tema pero esta ves se trata del correcto Uso del GridLayout y BorderLayout, al realizar una interfaz grafica dentro de paneles y agregarle componentes me encuentro con el problema de que la orientacion que le doy a los paneles con el BorderLayout no funcionan correctamente o no le doy el uso apropiado y quisiera que algunos ustedes me pudieran dar algunos consejos / tips para no cometer ciertos errores a la hora de programar; en este caso les mostrare la interfaz que hice y que debo realizar ami parecer el codigo esta bien pero tal ves sea la cuestion del uso correcto del GridLayout o BorderLayout.
Adjunto | Tamaño |
---|---|
Interfaz Grafica.jpg | 187.04 KB |
Interfaz Grafica Original.png | 192.43 KB |
- Inicie sesión o regístrese para enviar comentarios
codigo
Empieza leyendo esto.
Edita tu post de acuerdo a los tips.
borrar
como borro este post para poder hbacer otro ?? es que soy nuevo y no se muy bien c omo hacer los post y ya lei los tips pero nesecito borrar este post
No ocupas borrar, solo
No ocupas borrar, solo edita.
Cuando desarrollas UI en java debes recordar que existe un "juego" entre las capas.
La manera difícil de hacerlo es codificar y codificar a lo tonto, andar moviendole a los layout manager y esperar a que salga bien.
Otra forma es hacer un dibujo a lápiz y papel donde veas como irán los manejadores y los componentes. Mira, de acuerdo tu ejemplo puede ser así:
Disculpa el diseño, pero es mas fácil a lapiz jeje.
Donde los espacios negros son los manejadores generales y los blancos son componentes o manejadores específicos. Si te basas en el dibujo veras que al momento de escoger que manejador usar ya sera mas fácil.
Según yo lo podrías agrupar
Según yo lo podrías agrupar así:
Los rojos como BoxLayout
Los verdes como FlowLayout
Y el morado como BorerLayout ( el que viene default en el frame )
Como dice José Manuel tienes que hacer juego con los layout managers y combinarlos. Difícilmente podrías hacerlo con solo uno ( aunque group layout es bastaaaante flexible )
Suerte
Maestros
grasias por su respuesta ese es mi gran problema que no se como interpretar bien las cosas ahora es mas facil mmmm no conosco BoxLayout pero no es algo que no pueda dominar hay tutoriales y videos asi que grasias ustedes si que son expertos en este lenjuage ojala fueran los maestros de mi escuela jejeje grasias :D
Inconveniente ...
oe men perdona que te moleste hice exactamente como me dijiste y como me dijo la otra persona me salio casi todo el unico inconveniente que tube es con un componente con un simple JLabel que quiero colocarlo al norte con borderlayout pero me lo deja en el oeste :s ya estan acomodadas todos los demas componentes el JLabel es el unico que no e podido ponerlo al norte no se que es lo que pasa ya intente con 3 admonistradores de diseño :s
Cuidado con los manejadores.
Estas haciendo mal el uso de los manejadores, estas estableciendo de manera incorrecta los manejadores a los paneles.
Recuerdas cuando dije "jugar con los manejadores"? Pues eso, tienes que jugar un poco con ellos para que veas como es que actúan.
Mira, para poder hacer tu programa, como yo te propuse ocupas estos manejadores:
FlowLayout
BorderLayout
GridLayout
Ninguno mas. Esta fácil tu programa. No te desesperes si no te sale a los primeros intentos.
Entonces quedamos en que el problema radica en como estas usando tus manejadores. Recuerda que algunos componentes se agregan en el frame tal y como los agregas en código.
Estabas usando FlowLayout en el contenedor de tu JFrame
Estabas usando FlowLayout en el contenedor de tu JFrame
resultado:
@juanjo23 la imagen que
@juanjo23 la imagen que muestras no mantiene la proporción respecto a la original.
Fijate que en la original los botones de la derecha cubren todo el espacio Norte-Sur, y en tu imagen, el label se mantiene mas arriba y los tres componentes graficos(label, combo, check ) estan mas abajo que los botones.
Para mi, el "truco" en esta aplicación esta en usar paneles primarios y secundarios. Donde los paneles secundarios actúan como paquetes que se integraran a los paneles primarios.
El asunto esta de especificar correctamente que paneles serán primarios y cuales secundarios. Nada mas. Cuando los tengas identificados solo tienes que ir agregando los al frame.
Si con este tipo de explicación no puedes( que seguramente es porque no me explico muy bien), entonces te ayudare con código.
@Jose Manuel
La imagen no mantiene la proporción original porque yo no le modifiqué esa parte del código, sólo le puse el BorderLayout para que el label con el texto "Print my printers" se ubicara en la parte de arriba, ya que sólo le estaba respondiendo su duda de porqué el mismo le aparecía al este, no le estaba haciendo la tarea. Sé un poco más observador con el código, no con la imagen.
Si he mencionado lo de la
Si he mencionado lo de la imagen no es porque no me haya dado cuenta sobre el código. Simplemente me ha parecido innecesario resolver esa duda cuando el orden de los componentes en general no es el adecuado. De nada sirve que ese label quede correcto, cuando la estructura general esta mal.
Al menos así me parece a mi. Si estoy mal, por favor, corrijan.
Pues yo sólo trate de
Pues yo sólo trate de resolver la duda del label en el BorderLayout pero si @Jose Manuel tienes razón el diseño de todos los demás componentes está mal.
Y está bien, la sub-pregunta
Y está bien, la sub-pregunta era ¿por que me sale al oeste? y la respuesta fue: porque estás usando flowlayout ( y además con la imagen +1 )
Ahora sephiro tiene que seguir trabajando en ello
Byte!
Para que no te desanimes
Para que no te desanimes mira, ya lo hice. Osea que si se puede! no te rindas si no te sale en varias ocasiones. =)
Me ha faltado algo, algo que @juanjo23 ya te había proporcionado, un borde vació para crear el espacio en los bordes de la ventana.
Una linea como esta:
Para obtener este cambio:
Echale ganas!
Grasias
Grasias por sus respuestas si es cierto que me falla lo que pasa que estoy tratando de estudiar lo que mas que pueda por que un maestro que lleve el semestre pasado no me enseño nada y ahora con el nuevo maestro vamos mas rapido y si me sigo quedando atras reprobare pero pues pienso que siguiendo con ejercicios y practicas mejorare grasias por molestarse en solucionar mi problema:D