INTERFACES (GUI)
Interfaz Gráfica de Usuario: es un conjunto de componentes gráficos que permite la interacción usuario y la aplicación mediante ventanas (botones, listas, lista de diálogos, campos de textos).
La API de java nos proporciona Bibliotecas de clases para el desarrollo de interfaces gráficas de usuario.
Java provee dos API's con las que podemos trabajar para desarrollar GUIs, la más básica es AWT (Abstrct Window Toolkit). Las más desarrolladas se hacen con Swing, las cuales son más identificables ya que todas comienzan con "J", por ejemplo: JLabel, JButton, JTextField, JTextArea, JPanel y JFrame son clases de Swing.
Todo el manejo de eventos y layouts es exactamente el mismo para AWT y Swing.
La manera de importar los paquetes (AWT-swing) es de la siguiente manera:
import java.awt.*;
import javax.swing.*;
A continuación veremos los componentes JLabel, JTextField y JButton; que podemos utilizarlos al importar el paquete javax.swing.*;
Objeto de control JLabel Un objeto de control JLabel permite dibujar en el formulario una etiqueta, entendiéndose como etiqueta una expresión estática que se quiere colocar. También es usado para mostrar los resultados de un proceso.
Objeto de control JTextField Un objeto de control JTextField permite dibujar en el formulario un cuadro de texto, es decir, una caja que permite la introducción de un dato o valor. Este objeto es utilizado para el ingreso de datos
Objeto de control JButton Un objeto de control JButton permite dibujar en el formulario un objeto que contiene un proceso a ejecutar. Se utiliza comúnmente para llevar a cabo procesos específicos según la naturaleza de la aplicación.
Ahora mostraremos como crear una pequeña ventana y ademas incluiremos un JLabel que mostrará el siguiente mensaje: "Hola mundo" . Comencemos:
import java.awt.FlowLayout;
import javax.swing.*;
public class ventana extends JFrame{
private JLabel label;//Defino mi JLabel
public ventana(){
super("Mi Primera GUI");//Costructor del Padre recibe el titulo de la VENTANA
setLayout(new FlowLayout()); //Defino el Layout que va tener la ventana
setSize(300, 100);// Damos el tamaño o dimensiones que va tener la VENTANA
setLocationRelativeTo(this);//Centramos la VENTANA
setDefaultCloseOperation(EXIT_ON_CLOSE);//Para cerrar el programa
label = new JLabel("Hola Mundo");//Instanciamos el JLabel y le damos nombre
add(label);//Agregamos el Jlabel al Contenedor
setVisible(true);//Hacemos visible la VENTANA
}
public static void main(String[] args) {
ventana v = new ventana();//Instanciamos la clase ventana
}
}
Ya creamos nuestra primera GUI. Ahora haremos un programa mas complejo donde interactúen los tres componentes estudiados: JLabel, JTextField y JButton.
Para ello debemos saber acerca de los eventos, cuando presionamos el mouse en el JButton o si damos "enter" en el JTextField este realiza una acción a esto se le denomina (ActionEvent).
Crearemos un manejador de oyente . Para ello definimos la clase específica que haga de oyente de eventos y que implemente el método actionperformed().
Para comprender mejor, haremos un pequeño ejemplo de como implementar el método al hacer "click" en un botón.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MiOyente extends JFrame implements ActionListener{
//Aplicamos herencia e implementamos una Interfaz ActionListener
//En el cual nos obliga a implementar el metodo actionPerformed()
private JButton boton;//Defino mi JButton
public MiOyente(){
//--->ESTO YA LO VIMOS
//--->CON ESTO CREAMOS NUESTRO VENTANA CON UN BOTON
super("Manejo de Evento");//Costructor del Padre recibe el titulo de la VENTANA
setLayout(new FlowLayout()); //Defino el Layout que va tener la ventana
setSize(300, 100);// Damos el tamaño o dimensiones que va tener la VENTANA
setLocationRelativeTo(this);//Centramos la VENTANA
setDefaultCloseOperation(EXIT_ON_CLOSE);//Para cerrar el programa
boton = new JButton("BOTON");//Instanciamos el JButton y le damos nombre
add(boton);//Agregamos el Jlabel al Contenedor
setVisible(true);//Hacemos visible la VENTANA
//-->AHORA HAREMOS QUE EL BOTON DE UNA ACION AL OYENTE
boton.addActionListener(this);//Registro el componente en los eventos
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource()== boton) {
//--->AQUI SE RESPONDE EL EVENTO DEL BOTON
}
}
public static void main(String[] args) {
MiOyente Mo = new MiOyente();//Instanciamos la clase MiOyente
}
}
Ahora si procedemos a realizar nuestro programa donde interactúen el JLabel, JTextField y JButton.
Crearemos un JTextField donde ingresaremos nuestro nombre y cuando demos "click" en el JButton, nos mostrara nuestro nombre ingresado en el JLabel. Comencemos:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Ventana_Nombre extends JFrame implements ActionListener{
//Aplicamos herencia e implementamos una Interfaz ActionListener
//En el cual nos obliga a implementar el metodo actionPerformed()
private JTextField jtf_nombre;//Defino mi JTextField
private JButton jbtn_nombre;//Defino mi JButton
private JLabel jl_nombre;//Defino mi JLabel
public Ventana_Nombre(){
super("MOSTRAR NOMBRE");//Costructor del Padre recibe el titulo de la VENTANA
setLayout(new FlowLayout()); //Defino el Layout que va tener la ventana
setSize(290, 150);// Damos el tamaño o dimensiones que va tener la VENTANA
setLocationRelativeTo(this);//Centramos la VENTANA
setDefaultCloseOperation(EXIT_ON_CLOSE);//Para cerrar el programa
jtf_nombre = new JTextField(10);//Instanciamos el JTextField y le damos nombre
jbtn_nombre = new JButton("MOSTRAR");//Instanciamos el JButton y le damos nombre
jl_nombre = new JLabel();//Instanciamos el JLabel y le damos nombre
add(jtf_nombre);//Agregamos el JTextField al Contenedor
add(jbtn_nombre);//Agregamos el Jlabel al Contenedor
add(jl_nombre);//Agregamos el JLabel al contenedor
setVisible(true);//Hacemos visible la VENTANA
//HAREMOS QUE EL BOTON DE UNA ACION AL OYENTE
jbtn_nombre.addActionListener(this);//Registro el componente en los eventos
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource()==jbtn_nombre) { //RESPONDE EL EVENTO DEL BOTON
jl_nombre.setText(jtf_nombre.getText());//Utilizamos los metodos
} //setText y getText
}
public static void main(String[] args) {
Ventana_Nombre vn = new Ventana_Nombre();//Instanciamos la clase Ventana_Nombre
}
}
Concluimos dejan un ejercicio para que desarrollen una calculadora aplicando los temas estudiados de los componentes de la Interfaz Gráfica de usuario.
Referencias:
Enlace 1 Enlace 2