Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Septiembre 03, 2010, 02:23:44
Inicio Ayuda Buscar Ingresar Registrarse
Noticias: Más tutoriales de java

+  Foros Java y C/Linux
|-+  Programación
| |-+  Java J2SE
| | |-+  Problemas con JToolbar y JButton
« anterior próximo »
Páginas: [1] Enviar tema Imprimir
Autor Tema: Problemas con JToolbar y JButton  (Leído 289 veces)
HenryOS
Newbie
*

Karma: 0
Mensajes: 10

hernanperez85@gmail.com
Ver Perfil Email


« en: Febrero 04, 2010, 11:23:34 »

Hola!!! desde esta mañana que ando peleando con un problema en java... el escenario es el siguiente: tengo un JToolBar y dentro de este tengo varios JButtons y cada JButton tiene su tamaño seteado mediante setPrefferedSize.
La cuestión es que al correr el programa los botones no adquieren el tamaño deseado, sino el mínimo necesario para mostrar lo que contienen.
Pero lo más extraño aún es que tengo otro JToolbar con JButtons, pero que además tiene un JTextField, y tanto los botones como los campos de texto adquieren el tamaño asignado. Y la única diferencia es que este JToolBar tiene además un JTextField!, bastante raro no??

Bueno espero que alguno pueda ayudarme, gracias a todos por su tiempo y espero respuestas.
Saludos!!!!

Hernán


En línea
chuidiang
Administrator
Hero Member
*****

Karma: 2
Mensajes: 3381



Ver Perfil WWW Email
« Respuesta #1 en: Febrero 05, 2010, 09:07:26 »

Hola:

La llamada a setPreferredSize() en la mayoría de los componentes es totalmente inútil. Los componentes que tienen algún contenido (como los JButton), devuelven en getPreferredSize() el tamaño que necesitan para mostrar ese contenido y no el que se ha fijado con setPreferredSize().

Si quieres dar tamaño a uno de estos componentes, tienes varias opciones.

Una es que el contenedor donde vayas a meterlos tenga un layout adecuado y que sea menos "complaciente" con el tamaño deseado de los componentes que hay dentro. Un GridLayout hace que todos loc componentes tengan el mismo tamaño, independientemente de cual quiera tener cada uno. Un GridBagLayout te da bastante control sobre el tema, ya que puedes decidir si quieres que el componente se estire o no para ocupar todo el espacio disponible o incluso qué porcentaje del espacio debe ocupar.

Otra opción es llamar a los métodos setMinimumSize() y/o setMaximumSize() del componente. Creo que esos sí se respetan, aunque tampoco lo tengo claro.

Finalmente, la opción que seguro que funciona, es heredar del JButton y sobreescribir el método getPreferredSize() para que devuelva lo que tú quieras.

Código:
JButton boton = new JButton () {
    public Dimension getPreferredSize() {
       return new Dimension(.....);
    }
}

Se bueno.
En línea

HenryOS
Newbie
*

Karma: 0
Mensajes: 10

hernanperez85@gmail.com
Ver Perfil Email
« Respuesta #2 en: Febrero 05, 2010, 02:03:24 »

Hola Chuidiang, muchas gracias por tu respuesta...
Con respecto a las opciones que me diste:

1 Opción)Meterlos dentro de un contenedor no me sirve mucho porque pierden el aspecto que les da el JToolBar a los JButtons si coloco dentro del JToolBar un JPanel y dentro del JPanel los JButtons. O hay alguna forma de que sigan manteniendo el aspectos de botones de una toolbar???

2 Opción) Con respecto a esta opción, encontré que se puede dar el tamaño que uno quiera llamando conjuntamente a SetPrefferedSize y SetMaximumSize con el mismo valor de Dimension. No entiendo muy bien porque... pero me funcionó.

3 Opción)Creo que es una buena forma de hacerlo cuando tienes botones de diferentes tamaños, en mi caso cargo un Array List con varios botones y lo recorro dándole el mismo tamaño a todos, por lo tanto hasta el momento la mejor opción para mi sigue siendo la 2.

Gracias por tu tiempo, y espero que puedas responderme con respecto a la opción 1 y si me he confundido en alguno de los conceptos.

Saludos!

Hernán


En línea
chuidiang
Administrator
Hero Member
*****

Karma: 2
Mensajes: 3381



Ver Perfil WWW Email
« Respuesta #3 en: Febrero 05, 2010, 04:58:55 »

Hola:

Lo del layout lo comentaba en general, no para el caso concreto del JToolbar. De todas formas, JToolbar tiene un método setLayout() con el que se puede cambiar, pero no sé si el JToolBar tiene uno especial y se estropearía cambiándolo.

se bueno.
En línea

HenryOS
Newbie
*

Karma: 0
Mensajes: 10

hernanperez85@gmail.com
Ver Perfil Email
« Respuesta #4 en: Febrero 05, 2010, 05:20:39 »

Hola!, gracias por responderme tan pronto, voy a tener en cuenta lo que dices.
Saludos!

Hernán
En línea
Páginas: [1] Enviar tema Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!