comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Interfaz Grafica en Java [Segunda parte]

  • 0 Respuestas
  • 2642 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Expermicid

  • *
  • Underc0der
  • Mensajes: 457
  • Actividad:
    0%
  • Reputación 0
  • _-Expermicid-_
    • Ver Perfil
  • Skype: expermicid.xd
« en: Marzo 17, 2013, 11:54:26 am »
Hola a todos. Hoy vamos a seguir con esta segunda parte, en donde vemos primeramente como se pueden organizar los objetos dentro de la ventana. Y si no se hace muy largo veremos tambien los eventos.

Que es un layout?

Es un objeto que determina la posicion de los componentes en una ventana o panel. Es decir, es el encargado de distribuir los espacios. Hay varios tipos de layout y hasta podemos crear nuevos.

Vamos a ver un conjunto de layout con sus caracteristicas.

Para empezar cree una ventana con las configuraciones comunes que vimos en la primera parte.

Código: Java
  1. import javax.swing.JFrame;
  2.  
  3. public class Windows  extends No tienes permisos para ver links. Registrate o Entra con tu cuenta  {
  4.        
  5.         Windows() {
  6.                 setTitle("Ventana con Componentes");
  7.                 setSize(300, 100);
  8.                 setVisible(true);
  9.                 setDefaultCloseOperation(No tienes permisos para ver links. Registrate o Entra con tu cuenta.EXIT_ON_CLOSE);        
  10.         }
  11. }

Ahora en ese mismo contructor le vamos a agregar algunas lineas mas.

Creamos un Contenedor. En donde vamos a ir poniendo los diferentes componentes.

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta contenedor = getContentPane();

Pero para esto vamos a necesitar importar:

Código: Java
  1. import java.awt.Container;

Border Layout

Este es el que esta por defecto. Para agregar un componente hay que especificarle una de las siguiente posiciones: Norte, Este, Oeste, Sur o Centro.

Creamos algunos componentes:

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Label");
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta check = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer CheckBox");
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Button");

Y ahora vamos a agregarlos al Contenedor, es aqui donde le vamos a especificar la posicion:

Código: Java
  1. contenedor.add(label1, No tienes permisos para ver links. Registrate o Entra con tu cuenta.NORTH);
  2. contenedor.add(label2, No tienes permisos para ver links. Registrate o Entra con tu cuenta.EAST);
  3. contenedor.add(button2, No tienes permisos para ver links. Registrate o Entra con tu cuenta.WEST);
  4. contenedor.add(button1, No tienes permisos para ver links. Registrate o Entra con tu cuenta.SOUTH);
  5. contenedor.add(check, No tienes permisos para ver links. Registrate o Entra con tu cuenta.CENTER);



Codigo completo del constructor:

Código: Java
  1. Windows() {
  2.         setTitle("Ventana con Componentes");
  3.         setSize(300, 100);
  4.         setVisible(true);
  5.         setDefaultCloseOperation(No tienes permisos para ver links. Registrate o Entra con tu cuenta.EXIT_ON_CLOSE);
  6.                
  7.         No tienes permisos para ver links. Registrate o Entra con tu cuenta contenedor = getContentPane();
  8.                
  9.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  10.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  11.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Label");
  12.         No tienes permisos para ver links. Registrate o Entra con tu cuenta check = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer CheckBox");
  13.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Button");
  14.                
  15.         contenedor.add(label1, No tienes permisos para ver links. Registrate o Entra con tu cuenta.NORTH);
  16.         contenedor.add(label2, No tienes permisos para ver links. Registrate o Entra con tu cuenta.EAST);
  17.         contenedor.add(button2, No tienes permisos para ver links. Registrate o Entra con tu cuenta.WEST);
  18.         contenedor.add(button1, No tienes permisos para ver links. Registrate o Entra con tu cuenta.SOUTH);
  19.         contenedor.add(check, No tienes permisos para ver links. Registrate o Entra con tu cuenta.CENTER);
  20. }

Box Layout

En este modo, los componentes intentan ocupar el menor espacion que puedan.

Para utilizarlo hay que crear un BoxLayout primero:

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta box = new No tienes permisos para ver links. Registrate o Entra con tu cuenta(contenedor, No tienes permisos para ver links. Registrate o Entra con tu cuenta.Y_AXIS);

Estamos creando una instancia de un BoxLayout llamado box. Entre los parentesis van dos parametros, el primero es el contenedor al que le vamos a aplicar el layout y el segundo es la distribucion que van a tomar los componentes. En este caso es BoxLayout.Y_AXIS, donde se ordenan verticalmente, pero tambien podria haber sido BoxLayout.X_AXIS en donde se organizarian horizontalmente.

Ahora le decimos al contenedor que utilice ese layout:

Código: Java
  1. contenedor.setLayout(box);

Utilizando los mismo componente que en el caso anterior.

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Label");
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta check = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer CheckBox");
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Button");

Para terminar se los agregamos al contenedor:

Código: Java
  1. contenedor.add(label1);
  2. contenedor.add(button1);
  3. contenedor.add(label2);
  4. contenedor.add(check);
  5. contenedor.add(button2);

Y el resultado es:



Codigo completo del constructor:

Código: Java
  1. Windows() {
  2.         setTitle("Ventana con Componentes");
  3.         setSize(300, 100);
  4.         setVisible(true);
  5.         setDefaultCloseOperation(No tienes permisos para ver links. Registrate o Entra con tu cuenta.EXIT_ON_CLOSE);
  6.                
  7.         No tienes permisos para ver links. Registrate o Entra con tu cuenta contenedor = getContentPane();
  8.                
  9.         No tienes permisos para ver links. Registrate o Entra con tu cuenta box = new No tienes permisos para ver links. Registrate o Entra con tu cuenta(contenedor, No tienes permisos para ver links. Registrate o Entra con tu cuenta.Y_AXIS);
  10.         contenedor.setLayout(box);
  11.                
  12.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  13.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  14.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Label");
  15.         No tienes permisos para ver links. Registrate o Entra con tu cuenta check = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer CheckBox");
  16.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Button");
  17.                
  18.         contenedor.add(label1);
  19.         contenedor.add(button1);
  20.         contenedor.add(label2);
  21.         contenedor.add(check);
  22.         contenedor.add(button2);
  23. }

Flow Layout

Este Layout va agregando los componentes en el espacio que tiene disponible.

Creamos la instancia del FlowLayout y se la asignamos al contenedor:
Pero primero vamos a necesitar importar:

Código: Java
  1. import java.awt.FlowLayout;

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta flow = new No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  2. contenedor.setLayout(flow);

Creamos los componentes y los agregamos al Conteiner:

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Label");
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta check = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer CheckBox");
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Button");
  6.                
  7. contenedor.add(label1);
  8. contenedor.add(button1);
  9. contenedor.add(label2);
  10. contenedor.add(check);
  11. contenedor.add(button2);

Obteniendo:



Codigo completo del constructor:

Código: Java
  1. Windows() {
  2.         setTitle("Ventana con Componentes");
  3.         setSize(300, 100);
  4.         setVisible(true);
  5.         setDefaultCloseOperation(No tienes permisos para ver links. Registrate o Entra con tu cuenta.EXIT_ON_CLOSE);
  6.                
  7.         No tienes permisos para ver links. Registrate o Entra con tu cuenta contenedor = getContentPane();
  8.  
  9.         No tienes permisos para ver links. Registrate o Entra con tu cuenta flow = new No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  10.         contenedor.setLayout(flow);
  11.                
  12.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  13.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  14.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Label");
  15.         No tienes permisos para ver links. Registrate o Entra con tu cuenta check = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer CheckBox");
  16.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Button");
  17.  
  18.         contenedor.add(label1);
  19.         contenedor.add(button1);
  20.         contenedor.add(label2);
  21.         contenedor.add(check);
  22.         contenedor.add(button2);
  23. }

Grid Layout

En este caso los componentes se ordenan haciendo uso de tablas.

Instanciamos el GridLayout, en donde le pasamos como parametros las filas y columnas.
Y se lo asignamos al contenedor.

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta grid = new No tienes permisos para ver links. Registrate o Entra con tu cuenta(3,2);
  2. contenedor.setLayout(grid);

En nuestro caso usaremos 3 filas y 2 columnas.
Ademas necesitamos importar:

Código: Java
  1. import java.awt.GridLayout;

Agregamos los componentes al contenedor.
Y nos quedara:



Codigo completo del constructor:

Código: Java
  1. Windows() {
  2.         setTitle("Ventana con Componentes");
  3.         setSize(300, 100);
  4.         setVisible(true);
  5.         setDefaultCloseOperation(No tienes permisos para ver links. Registrate o Entra con tu cuenta.EXIT_ON_CLOSE);
  6.                
  7.         No tienes permisos para ver links. Registrate o Entra con tu cuenta contenedor = getContentPane();
  8.                
  9.         No tienes permisos para ver links. Registrate o Entra con tu cuenta grid = new No tienes permisos para ver links. Registrate o Entra con tu cuenta(3,2);
  10.         contenedor.setLayout(grid);
  11.                
  12.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  13.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  14.         No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Label");
  15.         No tienes permisos para ver links. Registrate o Entra con tu cuenta check = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer CheckBox");
  16.         No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Segundo Button");
  17.                
  18.         contenedor.add(label1);
  19.         contenedor.add(button1);
  20.         contenedor.add(label2);
  21.         contenedor.add(check);
  22.         contenedor.add(button2);
  23. }

Paneles

Para finalizar vamos a ver como implementar paneles y que nos va a servir mucho tambien para la organizacion de los componentes dentro de la ventana.

Para comenzar vamos a crear una ventana comun como hemos hecho anteriormente. Al cual le agregaremos ya un Container.

Código: Java
  1. import java.awt.Container;
  2. import javax.swing.*;
  3.  
  4. public class Windows extends No tienes permisos para ver links. Registrate o Entra con tu cuenta {
  5.        
  6.         Windows() {
  7.                 setTitle("Ventana con Componentes");
  8.                 setSize(300, 300);
  9.                 setVisible(true);
  10.                 setDefaultCloseOperation(No tienes permisos para ver links. Registrate o Entra con tu cuenta.EXIT_ON_CLOSE);
  11.                
  12.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta contenedor = getContentPane();
  13.         }
  14. }

Ahora voy a crear una nueva clase llamada Panel que herede de JPanel. Y le agregare un Constructor en donde le cambio el color de fondo para que se note luego en la imagen.

Código: Java
  1. import java.awt.Color;
  2.  
  3. public class No tienes permisos para ver links. Registrate o Entra con tu cuenta extends No tienes permisos para ver links. Registrate o Entra con tu cuenta{    // Clase Panel heredada de JPanel
  4.        
  5.         No tienes permisos para ver links. Registrate o Entra con tu cuenta(){    // Constructor
  6.                 setBackground(No tienes permisos para ver links. Registrate o Entra con tu cuenta.BLUE);    // Color de fondo
  7.         }
  8.  
  9. }

Volvemos al constructor de la ventana, creamos una instancia de la clase Panel y se la agregamos al contenedor.

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta panel = new No tienes permisos para ver links. Registrate o Entra con tu cuenta();   // instanciamos un objeto Panel
  2. contenedor.add(panel);   // lo agregamos al contenedor



Si notamos en la imagen vemos al panel por el color de fondo Azul que ocupa todo la ventana.

Y podemos agregarle componentes al Panel desde su contructor.

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta label = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Label");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta button = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Primer Button");
  3.                
  4. add(label);
  5. add(button);



Ahora ustedes se preguntaran, para que hacer todo esto de crear un Panel si podemos agregar los componentes en el mismo contenedor.

La ventanja es que por ejemplo en el contenedor de la ventana podemos ponerle un Layout Grid y en lo que seria cada celda ponerle un panel distinto.

Vamos a crear una ventana en donde le agregaremos un contenedor con un GridLayout de 3 filas y 1 columna.

Contructor:

Código: Java
  1. Windows() {
  2.         setTitle("Ventana con Componentes");
  3.         setSize(300, 300);
  4.         setVisible(true);
  5.         setDefaultCloseOperation(No tienes permisos para ver links. Registrate o Entra con tu cuenta.EXIT_ON_CLOSE);
  6.        
  7.         No tienes permisos para ver links. Registrate o Entra con tu cuenta contenedor = getContentPane();        // contenedor de la ventana
  8.         No tienes permisos para ver links. Registrate o Entra con tu cuenta grid = new No tienes permisos para ver links. Registrate o Entra con tu cuenta(3,1);   // instanciamos un objeto GridLayout
  9.         contenedor.setLayout(grid);       // se lo agregamos al contenedor
  10. }

Y vamos a crea dos clases:

Una para un panel llamada PanelUno que herede de JPanel y cuyo color de fondo va a ser Cyan.

Código: Java
  1. import java.awt.Color;
  2. import javax.swing.JPanel;
  3.  
  4. public class PanelUno extends No tienes permisos para ver links. Registrate o Entra con tu cuenta{
  5.        
  6.         PanelUno() {
  7.                 setBackground(No tienes permisos para ver links. Registrate o Entra con tu cuenta.CYAN);
  8.         }
  9. }

La segunda clase para otro panel llamada PanelDos que herede de JPanel y cuyo color de fondo sea Green.

Código: Java
  1. import java.awt.Color;
  2. import javax.swing.JPanel;
  3.  
  4. public class PanelDos extends No tienes permisos para ver links. Registrate o Entra con tu cuenta{
  5.        
  6.         PanelDos() {
  7.                 setBackground(No tienes permisos para ver links. Registrate o Entra con tu cuenta.GREEN);
  8.         }
  9.        
  10. }

Volvemos al constructor de la ventana y le agregamos los dos paneles al Layout.

Código: Java
  1. PanelUno panel1 = new PanelUno();       // instanciamos un objeto de PanelUno
  2. PanelDos panel2 = new PanelDos();       // instanciamos un objeto de PanelDos
  3.                
  4. // agregamos los paneles al contenedor
  5. contenedor.add(panel1);
  6. contenedor.add(panel2);



Mirando los colores podemos apreciar la ubicacion de cada panel. Y hay una tercer celda en donde no esta en uso.

Y como un Panel es un como un contendor, le podemos asignar un Layout.

Al PanelUno le vamos a poner un GridLayout.

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta grid = new No tienes permisos para ver links. Registrate o Entra con tu cuenta(2,2);
  2. setLayout(grid);[//CODE]
  3.  
  4. Al [B]PanelDos[/B] le vamos a poner un [B]No tienes permisos para ver links. Registrate o Entra con tu cuenta[/B].
  5.  
  6. [CODE=java]No tienes permisos para ver links. Registrate o Entra con tu cuenta flow = new No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  7. setLayout(flow);

Para terminar la demostracion le agregamos unos componentes para ver la diferenciacion.

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta label1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Label1");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta label2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Label2");
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta button1 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Button1");
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta button2 = new No tienes permisos para ver links. Registrate o Entra con tu cuenta("Button2");
  5.                
  6. add(label1);
  7. add(label2);
  8. add(button1);
  9. add(button2);

Quedandonos:



Como podran ver la organizacion de los componentes es distintas gracias a poder ponerle un layout distinto a cada panel.

:) Bueno espero que les sirva.

Saludos
« Última modificación: Marzo 17, 2013, 11:56:34 am por Expermicid »

 

¿Te gustó el post? COMPARTILO!



[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 1694
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 4848
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 2337
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
[LIBRO] Programación avanzada en Java - Sonia Jaramillo Valbuena

Iniciado por graphixx

Respuestas: 4
Vistas: 3469
Último mensaje Noviembre 09, 2018, 09:07:14 am
por ivaneliascalu
[JAVA] Queso Admin Finder version Alpha

Iniciado por Flemon

Respuestas: 2
Vistas: 1528
Último mensaje Marzo 02, 2015, 08:25:18 pm
por Flemon