send
Grupo de Telegram
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 [Tercera parte]

  • 8 Respuestas
  • 4812 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 19, 2013, 08:56:42 am »
Hola a todos, aqui vamos a hacer la tercera y ultima parte, en donde vamos a ver los eventos que es lo que nos faltaba.

Recuerden mirar si no lo hicieron las primeras dos partes.

Para comenzar vamos a ver lo que son las interfaces, que lo vamos a necesitar para llegar a los eventos.

Interfaz

La interfaz es una colección de métodos abstractos y propiedades. En ellas se especifica qué se debe hacer pero no su implementación

Una interfaz se declararia:

Código: Java
  1. interface nombre_interface {
  2.       tipo_retorno nombre_metodo ( lista_argumentos ) ;
  3.       .............................
  4. }

Como por ejemplo:

Código: Java
  1. interface Persona {
  2.       public void caminar(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login direccion, int cantidad);
  3.       public void saltar();
  4.       .............................
  5. }

Eventos

Cuando se va a trabajar con eventos tenemos que especificar cuales son los objetos oyentes. Es decir tenemos que crear objetos y hacerlos oyentes de los eventos necesarios, en caso contrario no se podran manejar los eventos.
Hay muchos tipos de Listners:

  • ActionListner: Eventos de accion (botones)
  • KeyListner: Teclas del teclado
  • MouseListner: Clicks en el mouse
  • MouseMotionListner: Movimientos del mouse
  • AdjustmentListner: Componente movido, redimensionado.
  • WindowListner: Eventos de la ventana
  • Entre otros...
Veamos un simple ejemplo en donde usemos esto para que sea mas facil de entender y luego lo haremos un poco mas interesante.

Vamos a crear una ventana. Sino se acuerdan pueden ver los las primera parte.

Código: Java
  1. import javax.swing.*; // importamos los modulos de Swing
  2.  
  3. public class Windows extends You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login { // creamos una clase que hereda de JFrame
  4.        
  5.         Windows() { // constructor
  6.                 setTitle("Ventana Nueva"); // titulo de la ventana
  7.                 setSize(300, 200); // tamaño
  8.                 setLocation(500, 500); // ubicacion
  9.                 setVisible(true); // visibilidad
  10.                 setDefaultCloseOperation(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.EXIT_ON_CLOSE); // terminamos la aplicacion al cerrar la ventana
  11.         }  // fin del constructor
  12.  
  13. } // fin class Windows

Vamos a crear una nueva clase que herede de JButton y que implemente ActionListener, que es una interfaz.
Importaremos primeramente lo que necesitemos.

Código: Java
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.JButton;
  4.  
  5. public class unButton extends You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login implements You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login {
  6.  
  7. }

Dentro de dicha clase vamos a crear el constructor en donde le pondremos un texto al button.
Y ademas vamos a sobreescribir un metodo que se va a llamar cuando se ejecute un evento de la interfaz.

Nos quedaria asi entonces:

Código: Java
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.JButton;
  4.  
  5. public class unButton extends You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login implements You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login {
  6.  
  7.         unButton() {  // constructor
  8.                 super("Boton");
  9.         }
  10.        
  11.         public void actionPerformed(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login arg0) {  metodo de la interfaz You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
  12.                 You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.out.printf("Preciosaste el Boton :)");
  13.         }
  14.  
  15. }

Para finalizar volvemos a la clase de la ventana y vamos a agregar un boton.

Código: Java
  1. unButton button = new unButton(); // instanciamos un boton
  2. button.addActionListener(button); // lo hacemos oyentes de si mismo
  3. add(button); // lo agregamos al JFrame

Lo probamos y?



Nos ha salido un boton medio grande xD
No hemos establecido ningun layout, para el que no se acuerde mire la segunda parte.

Veamos otro ejemplo en donde no vamos a usar la terminal. Sino que vamos a hacer uso de los objetos del JFrame.
En este ejemplo importaremos los modulos necesarios e instanciaremos una clase que herede de JFrame y que implemente la interfaz de ActionListener.
Dentro de ella crearemos un constructor donde le pondremos las configuraciones deseadas a la JFrame y agregaremos un JTextfield, un JButton y un JLabel.
Y mediante un evento haremos que lo que pongamos en el JTextField, al apretar el JButton pase al JLabel. :)

Código: Java
  1. //importamos el modulo necesarios
  2. import java.awt.FlowLayout;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import javax.swing.*;
  6.  
  7. public class Windows extends You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login implements You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login { // creamos una clase que hereda de JFrame y que implementa la interfaz ActionListener
  8.         You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login label;
  9.         You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login texto;
  10.        
  11.         Windows() { // constructor
  12.                 setTitle("Ventana Nueva"); // titulo de la ventana
  13.                 setSize(300, 200); // tamaño
  14.                 setLocation(500, 500); // ubicacion
  15.                 setVisible(true); // visibilidad
  16.                 setLayout(new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login()); // especificamos un layout
  17.                 setDefaultCloseOperation(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.EXIT_ON_CLOSE); // terminamos la aplicacion al cerrar la ventana
  18.                
  19.                 texto = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login("Introduce el Texto", 20); // instanciamos un objeto JTextField
  20.                 You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login button = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(); // instanciamos un objeto JButton
  21.                 button.setText("Boton"); // colocamos un texto al boton
  22.                 label = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(); // instanciamos un objeto JLabel
  23.                
  24.                 button.addActionListener(this); // configuramos a JFrame oyente del boton
  25.                
  26.                 // agregamos los objetos
  27.                 add(texto);
  28.                 add(button);
  29.                 add(label);
  30.                
  31.         }  // fin del constructor
  32.  
  33.         public void actionPerformed(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login arg0) {
  34.                 label.setText(texto.getText()); // al JLabel le colocamos el texto del JTextField
  35.         }
  36.        
  37. } // fin class Windows

Si notaran al JLabel y al JTextField los declaramos fuera del constructor, y eso fue para que los podamos usar luego en el actionPerformed.

Veamos unas imagenes:

Antes de precionar el boton. Podemos ver los componente, al label no se lo nota pero esta.



Introducimos un texto en el JTextField y presionamos el JButton.



Para terminar veamos un ejemplo en donde vamos a tener que atender a mas de un componente para realizar sus eventos.

Vamos a hacer el mismo caso que el anterior pero agregando un par mas de componentes.

Código: Java
  1. //importamos el modulo necesarios
  2. import java.awt.FlowLayout;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import javax.swing.*;
  6.  
  7. public class Windows extends You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login implements You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login { // creamos una clase que hereda de JFrame y que implementa la interfaz ActionListenes
  8.         You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login label1, label2;
  9.         You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login texto1, texto2;
  10.         You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login button1, button2;
  11.        
  12.         Windows() { // constructor
  13.                 setTitle("Ventana Nueva"); // titulo de la ventana
  14.                 setSize(300, 200); // tamaño
  15.                 setLocation(500, 500); // ubicacion
  16.                 setVisible(true); // visibilidad
  17.                 setLayout(new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login()); // especificamos un layout
  18.                 setDefaultCloseOperation(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.EXIT_ON_CLOSE); // terminamos la aplicacion al cerrar la ventana
  19.                
  20.                 texto1 = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(10); // instanciamos un objeto JTextField
  21.                 button1 = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(); // instanciamos un objeto JButton
  22.                 button1.setText("Bt1"); // colocamos un texto al boton
  23.                 label1 = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(); // instanciamos un objeto JLabel
  24.                
  25.                 texto2 = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(10); // instanciamos un objeto JTextField
  26.                 button2 = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(); // instanciamos un objeto JButton
  27.                 button2.setText("Bt2"); // colocamos un texto al boton
  28.                 label2 = new You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login(); // instanciamos un objeto JLabel
  29.                
  30.                 button1.addActionListener(this); // configuramos a JFrame oyente del boton
  31.                 button2.addActionListener(this); // configuramos a JFrame oyente del boton
  32.                
  33.                 // agregamos los objetos
  34.                 add(texto1);
  35.                 add(button1);
  36.                 add(label1);
  37.                 add(texto2);
  38.                 add(button2);
  39.                 add(label2);
  40.                
  41.         }  // fin del constructor
  42.  
  43.         public void actionPerformed(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login arg0) {
  44.                
  45.         }
  46.        
  47. } // fin class Windows

El code es exactamente el mismo que en el ejemplo anterior solo con la diferencia que le agregue un comonente mas de cada uno.
Asi nos quedaria:



Ahora tenemos que reescribir el metodo actionPerformed.

Código: Java
  1. public void actionPerformed(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login arg0) {
  2.         if (arg0.getSource() == button1)
  3.                 label1.setText(texto1.getText());
  4.         if (arg0.getSource() == button2)
  5.                 label2.setText(texto2.getText());              
  6. }

Para lograr esto hacemos uso del parametro arg0. Y tambien del metodo getSource, con el cual vamos a poder obtener quien ha disparado el evento.

Y asi nos quedara.



Final :)

Saludos
« Última modificación: Marzo 26, 2013, 01:05:08 pm por Expermicid »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5283
  • Actividad:
    30%
  • Reputación 28
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Marzo 19, 2013, 09:01:01 am »
Esta excelente bro!
+karma!
Deja algo para el taller!


Desconectado rushmaar

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Marzo 22, 2013, 09:38:14 pm »
Muy buen artículo, solo me gustaría colaborar con una pequeña corrección:
Una interfaz no es una clase, es un contrato.
Las principales diferencias son:
Una clase abstracta puede implementar algunos de sus métodos mientras que una interfaz no.
Una clase puede implementar una interfaz pero no a otra clase.
Una interfaz no puede ser extendida por una clase, mientras que la clase si.
Una interfaz puede extender a otra interfaz pero no a una clase.
Una clase puede extender a solo una clase pero implementar varias interfaces.

Desconectado ~ Yoya ~

  • *
  • Underc0der
  • Mensajes: 149
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #3 en: Marzo 24, 2013, 01:39:36 am »
@rushmaar, lo que agregas no son correcciones hacia  este articulo, mas bien parece algunos puntos que se puede agregar al articulo. Ya que los puntos que escribiste no se encuentra en el articulo y si no estan nose puede corregir algo que no existe. Deberías modificar lo de la corrección, porque estas desvalorando el articulo que hizo Expermicid.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Desconectado rushmaar

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Marzo 25, 2013, 01:36:58 pm »
La corrección que hice es por el siguiente texto:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
...
Para comenzar vamos a ver lo que son las interfaces, que lo vamos a necesitar para llegar a los eventos.

Interfaz

La interfaz es una clase en donde se especifican los metodos pero sin implementarlos.
...

Desconectado ~ Yoya ~

  • *
  • Underc0der
  • Mensajes: 149
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #5 en: Marzo 25, 2013, 01:52:33 pm »
Pues en la interfaz se definen los metodos pero nose implementan. Como el ha dicho, no hay un error en eso.

Hablas de clases abstracta en tu correccion y en ningun momento se toca el tema de clase abstracta... No es una correccion lo que escribiste, son cosas que se pueden agregar al articulo principal o puntos a tener en cuenta.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Desconectado rushmaar

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Marzo 25, 2013, 02:10:42 pm »
Dice textualmente: "La interfaz es una clase ..."
Yo corrijo: "La interfaz NO es una clase"
El texto dice "es una clase en donde se especifican los metodos pero sin implementarlos"
Si conoces programación orientada a objetos, una clase que no implementa todos sus métodos es por definición una clase abstracta.
Saludos.

Desconectado ~ Yoya ~

  • *
  • Underc0der
  • Mensajes: 149
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #7 en: Marzo 26, 2013, 12:30:20 am »
No me había fijado en esa parte. Esta mal la definición, ya que una interfaz no es una clase, pero igual en ningún momento quizo referirce a una clase abstracta.

Saludos, espero que modifique esa definicion. Bien hecho rushmaar, pero la parte de los otros puntos, pienso que esta de mas.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Desconectado rushmaar

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #8 en: Marzo 26, 2013, 10:11:14 am »
Lo que escribí fue esto:

Muy buen artículo, solo me gustaría colaborar con una pequeña corrección:
Una interfaz no es una clase, es un contrato. <--- Esta es la corrección
Las principales diferencias son: <--- Todo lo que sigue justifica la corrección realizada
Una clase abstracta puede implementar algunos de sus métodos mientras que una interfaz no.
Una clase puede implementar una interfaz pero no a otra clase.
Una interfaz no puede ser extendida por una clase, mientras que la clase si.
Una interfaz puede extender a otra interfaz pero no a una clase.
Una clase puede extender a solo una clase pero implementar varias interfaces.

 

¿Te gustó el post? COMPARTILO!



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

Iniciado por graphixx

Respuestas: 3
Vistas: 1396
Ú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: 4170
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
[LIBRO] Programación avanzada en Java - Sonia Jaramillo Valbuena

Iniciado por graphixx

Respuestas: 1
Vistas: 2328
Último mensaje Noviembre 07, 2017, 12:34:40 pm
por K0m0dr3x
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 2098
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
Tutorial: Traduccion de aplicaciones JAVA - Moviles [By :: SmartGenius :: ]

Iniciado por ProcessKill

Respuestas: 0
Vistas: 1454
Último mensaje Febrero 24, 2010, 04:26:07 pm
por ProcessKill