Gadgets, Celulares, Telefonia, Electronic Music y mucho más…

Usando GridBagLayout en Java…

Esta vez debido a un proyecto me ha tocado meterme lo más que puedo en JAVA y la investigación empieza a dar resultados... ahora hablaremos un poco del Layout de Java: GridBagLayout.

GridBagLayout es el más complejo Layout de Java y asu vez el más potente, bueno desde mi punto de vista como programador (Desarrollador es para los grandes genios) es algo que tienes que aprender, una vez entendido las GUI son pan Comido. Empecemos a usar este Layout...

GridBagLayout

En Primera definimos nuestra GUI quizas en papel o mentalmente, la GUI que acontinuación presento solo servirá para fines demostrativos, será bastante simple pero ayudará a que entendamos como posicionar objetos con este Layout.


Esta será la GUI que construiremos y explicaremos con el fin de entender que onda con el GridBagLayout:

gbl_1

Identifiquemos las partes contenidas en la GUI anterior para tenerlas presentes.

gbl_2

Como podemos ver tenemos una etiqueta a la cual le agregamos una imagen, seis botones de la libreria SWING de JAVA y por ultimo una segunda etiqueta.

Ahora debemos imaginar una cuadricula que separe cada uno de los componentes para situarlos dentro del Layout, bueno no la imagenemos para eso esta la siguiente imagen:

gbl_3

Como han podido ver, el componente Label que despliega la imagen ocupa tres celdas, como tambien lo hace el segundo Label al pie de la ventana.

Bueno ya se que lo quieren es empezar a revisar el codigo bien empezaremos construyendo una pequeña función que cuando la llamemos dibuje la interfaz de nuestro programilla. más o menos tendremos la estructura siguiente:

JAVA:
  1. import javax.swing.*;
  2. import java.awt.*;
  3.  
  4. public class demoGBL {
  5.    static void ShowGUI(){
  6.  
  7.    }
  8.    public static void main (String[] args) {
  9.    ShowGUI();
  10.    }
  11. }

Como siempre JAVA necesita que construyamos los objetos que vamos a utilizar, asi que procederemos a construir los seis botones, las dos etiquetas y el layout con sus respectivas constraints, dentro de la función ShowGUI:

JAVA:
  1. import javax.swing.*;
  2. import java.awt.*;
  3.  
  4. public class demoGBL {
  5.    static void ShowGUI(){
  6.       //Sin este JFrame no hay apliocación
  7.       JFrame principal = new JFrame ("Demo - GridBagLayout");
  8.       JLabel logo = new JLabel (new ImageIcon("imagenes/dhc_logo_1.png"));
  9.       JLabel team = new JLabel ("DaHouseCat - http://blog.dahousecat.net");
  10.       JButton b1 = new JButton ("Boton");
  11.       JButton b2 = new JButton ("Boton");
  12.       JButton b3 = new JButton ("Boton");
  13.       JButton b4 = new JButton ("Boton");
  14.       JButton b5 = new JButton ("Boton");
  15.       JButton b6 = new JButton ("Boton");
  16.       GridBagLayout gridbag = new GridBagLayout();
  17.       /Asignamos la constante EXIT_ON_CLOSE, cierra la ventana al pulsar la X.
  18.       principal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19.       //Asignamos al JFrame el Layout que usará, GridBagLayout
  20.       principal.setLayout (gridbag);
  21.    }
  22.    public static void main (String[] args) {
  23.    ShowGUI();
  24.    }
  25. }

Bien, hasta el momento hemos construido todos nuestros objetos, hemos asignado la Layout al JFrame; estamos listos para agregar los componentes a nuestro Layout, vamos a iniciar asignando el primer boton b1:

JAVA:
  1. gbc.weightx = 0.5;
  2.    gbc.gridx = 0;
  3.    gbc.gridy = 1;
  4.    //Se agrega el primer boton al JFrame
  5.    principal.add (b1,gbc);

De la forma anterior agregaremos todos los botones, lo importante es aprender para que sirven los parametros que se han establecido antes de poner el botón.

gridwidth es el ancho en celdas que ocupará el componente, ya una vez que tengamos definidas las celdas de nuestro Layout, con este metodo definimos el ancho del componente.

weightx es el aspecto que debe mantener el objeto con respecto a la columna en la que se encuentra. los rangos van de 0.0 a 1.0. Son usados para mantener el ancho de la cosulta de tamaño adecuado.

weighty lo mismo que el comando anterior pero en vez de extenderse en la columna se exiende en filas.

gridx y gridy hacen referecia a la celda en la que se colocará el componente.


gbl_4

Siguiendo con la imagen; la primera fila de botones gridy es igual 1, la segunda fila de botones gridy es igual a 2 y para el Laber final gridy es igual a 3

Bien después de agregar los seis botones nuestro codigo se debe ver asi:

JAVA:
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class demoGBL {
  4.    static void ShowGUI(){
  5.       //Sin este JFrame no hay apliocación
  6.       JFrame principal = new JFrame ("Demo - GridBagLayout");
  7.       JLabel logo = new JLabel (new ImageIcon("imagenes/dhc_logo_1.png"));
  8.       JLabel team = new JLabel ("DaHouseCat - http://blog.dahousecat.net");
  9.       JButton b1 = new JButton ("Boton1");
  10.       JButton b2 = new JButton ("Boton2");
  11.       JButton b3 = new JButton ("Boton3");
  12.       JButton b4 = new JButton ("Boton4");
  13.       JButton b5 = new JButton ("Boton5");
  14.       JButton b6 = new JButton ("Boton6");
  15.       GridBagLayout gridbag = new GridBagLayout();
  16.       GridBagConstraints gbc = new GridBagConstraints();
  17.       //Los insets son los bordes externos de una aplicación, o sea el espacio entre cada componente, new Insets (arriba,izquierda,abajo,derecha);
  18.       gbc.insets = new Insets(3,3,3,3);
  19.       //Asignamos la constante EXIT_ON_CLOSE, cierra la ventana al pulsar la X.
  20.       principal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21.       //Asignamos al JFrame el Layout que usará, GridBagLayout
  22.       principal.setLayout (gridbag);
  23.       //Se agrega el primer boton al JFrame
  24.       gbc.weightx = 0.5;
  25.       gbc.gridx = 0;
  26.       gbc.gridy = 1;
  27.       principal.add (b1,gbc);
  28.       gbc.weightx = 0.5;
  29.       gbc.gridx = 1;
  30.       gbc.gridy = 1;
  31.       principal.add (b2,gbc);
  32.       gbc.weightx = 0.5;
  33.       gbc.gridx = 2;
  34.       gbc.gridy = 1;
  35.       principal.add (b3,gbc);
  36.       gbc.weightx = 0.5;
  37.       gbc.gridx = 0;
  38.       gbc.gridy = 2;
  39.       principal.add (b4,gbc);
  40.       gbc.weightx = 0.5;
  41.       gbc.gridx = 1;
  42.       gbc.gridy = 2;
  43.       principal.add (b5,gbc);
  44.       gbc.weightx = 0.5;
  45.       gbc.gridx = 2;
  46.       gbc.gridy = 2;
  47.       principal.add (b6,gbc);
  48.       //Ahora agregaremos el logotipo y el pie de la aplicacion.
  49.       gbc.weightx = 0.5;
  50.       gbc.gridx = 0;
  51.       gbc.gridy = 0;
  52.       gbc.gridwidth = 3;
  53.       //Se utilizan para acceder a costantes, esta significa que el componente debe llenar la celda a lo ancho.
  54.       gbc.fill = GridBagConstraints.HORIZONTAL;
  55.       principal.add (logo,gbc);
  56.       gbc.weightx = 0.5;
  57.       gbc.gridx = 0;
  58.       gbc.gridy = 3;
  59.       //Asignamos que la Label tenga un ancho de 3 celdas
  60.       gbc.gridwidth = 3;
  61.       //Alineación del texto dentro del componente Label
  62.       team.setHorizontalAlignment(JLabel.CENTER);
  63.       principal.add (team,gbc);
  64.       //Hace visible el panel
  65.       principal.setVisible(true);
  66.       //Ajusta la ventana a los componentes que haya
  67.       principal.pack();
  68.    }
  69.    public static void main (String[] args) {
  70.    ShowGUI();
  71.    }
  72. }

Sencillo ¿no?, pues ahi tienes un excelente Layout para hacer sus GUI's en JAVA, esta aplicación corre excelente como aplicación de Windows, solo falta meterla a un JAR y listo, pero bueno seguiremos hablando de JAVA y algunas cositas, por el momento ya tenemos el inicio de una buena aplicación.

Referencias

Como Usar GridBagLayout - The Java Tutorials by SUN
Creando una GUI con JFC/Swing - The Java Tutorials by SUN

¿Te ha gustado este artículo? Subscribete vía Email, para ¡recibirlos en tu correo!

¿No encontró lo que buscaba? ¡Use el buscador!
 

Escrito para el 13 de March de 2007
RSS 2.0 Trackback

3 Comentarios este tema es Hot

  1. Proz Dijo:

    jajajaja los layouts de java ohhh …….. bueno algo que no mucha gente sabe es que hay un layout NULO en el cual tu posicionas los elementos con coordenadas X y Y, muy util cuando son aplicaciones fullscreen, porque los elementos no se redimensionan con la ventana, pero igual, buen articulo man! ^^



    Escrito el 13 de March de 2007 a las 21:52
    Usando Mozilla Firefox Mozilla Firefox 2.0.0.2 en Ubuntu Linux Ubuntu Linux
  2. rodrigo salado anaya Dijo:

    Este usuario fue bueno! ^^excelente post también en linux/DebianEtch4.x se ve muy bien, gracias por la información. Con respecto a que se re-dimensionen los swing, yo lo evito usando paneles internos, además de que se ven (a mi parecer) más bonitos, también esta la opción de deshabilitar la re-dimención. otra cosita que se ve padre; y con esto no digo que no lo sepas o que te falta algo ni nada, es asignarle una posición a la aplicación en el monitor.

    JFrame principal = new JFrame(”Demo - GridBagLayout”;

    int inset = 350;

    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();

    principal.setBounds(inset, inset,
    screenSize.width - inset * 2,screenSize.height - inset * 2);

    principal.setSize(700, 400);

    //principal.setVisible(true);

    /Code …/



    Escrito el 24 de June de 2008 a las 13:21
    Usando Mozilla Mozilla 1.8.1.14 en Debian GNU/Linux Debian GNU/Linux
  3. DaHouseCat Dijo:

    rodrigo salado anaya excelente, buen tip



    Escrito el 24 de June de 2008 a las 19:44
    Usando Mozilla Firefox Mozilla Firefox 3.0 en Windows Windows XP

Deja un Comentario

Hey tu! usar emoticones te hace más cool!
                                         

Comparar precios y encontrar el mejor Telefono movil con twenga !

Escriba su e-mail:

Reciba en su correo electrónico lo más reciente
en DaHouseCats Blog

Comentarios

Suscríbete

  •  
  • Add to Twitter
  • Add to Google Reader or Homepage
  • Add to Technorati Favorites

Disclaimer:

  • DaHouseCat, no se hace responsable acerca del mal uso que se le dé a la información contenida en los artículos y / o tutoriales, quedando en absoluta responsabilidad del usuario.

Administración

  • DaHouseCat
    Posts: 491 - 100%
    Comentarios: 4482 - 100%
    Pingbacks: 89 - 100%
    Score: 9722
491 posts, generados por 1 autores.

Buscar

 

M. Instántanea

B. de Blogueros

DaHouseCat en:

Blogs Amigos

Blogs Campeche

Webs Amigas

Categorías




Archivo

Recomendados

  • 'Key' not passed to script.
Este blog utiliza Worpress y fue diseñado por DaHouseCat - 2007
El contenido y algunas imagenes de DaHouseCat's Blog estan bajo la licencia de
Reconocimiento-NoComercial-SinObraDerivada 2.5