UNIDAD I - Interfaces Gráficas de Usuario
UNIDAD I - Interfaces Gráficas de Usuario
UNIDAD I - Interfaces Gráficas de Usuario
Objeto
Aplicaciones
Tipos:
- Modo consola
1) Interacción mediante el teclado
2) La interfaz esta basada en texto
-Aplicaciones con interfaz gráfica
1) Ventanas, botones, cajas de texto, tablas, imágenes, etc.
2) Iconos
3) Programación orientada a eventos.
Applets
Pequeños programas que se ejecutan dentro de un navegador.
Concepto
3
Alto (1973) desarrollado por Xerox PARC, fue
la primera computadora que incorporaba
ratón y un sistema operativo con una interfaz
gráfica de usuario.
4
Alto (1983) También llamado Lisa
OS, fue desarrollado por Apple
con la intención de ser una
estación de trabajo para procesar
documentos.
5
En 1985 Microsoft sacó Windows
1.0, el primer sistema operativo
basado en una GUI. El sistema
presentaba íconos de 32×32
píxeles y gráficos de color. La
característica más interesante
fue el ícono del reloj análogo
animado.
6
PROGRAMACIÓN GUI EN JAVA
7
PROGRAMACIÓN GUI EN JAVA
9
Gestores de disposición
10
Ejemplo AWT Importamos las
clases awt
import java.awt.*;
import java.awt.event.*;
12
Jerarquía de clases de AWT
13
Swing: (Standard Widget Toolkit) Conjunto de componentes para
diseñar interfaces gráficas de usuario.
• JFrame,
• JLabel
• JTextBox
14
Jerarquía de clases de SWING
15
Componentes contenedores de Swing
16
Componentes contenedores de Swing
JPanel: Su funcionalidad es la de
agrupar y organizar otros componentes.
18
Controles básicos de Swing
JCheckBox,JRadioButton,JButton: Distintos
tipos de botones, marcar una casilla,
escoger entre varias opciones, botón
respectivamente.
19
Controles básicos de Swing
JTextField, JFormattedTextField y JPasswordField:
Variantes de editores, el primero recibe un texto sin
restricciones, el segundo permite indicar el conjunto
de caracteres legales y finalmente el tercero
muestra el mensaje oculto.
20
Controles especializados de Swing
21
Ventana con Swing sin extender de JFrame
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public FrameSwing(){
JFrame frame =new JFrame("Ventana de Swing");
JButton miBoton=new JButton(“Aceptar");
JLabel etiqueta=new JLabel("Hola Grupo");
frame.setLayout(new FlowLayout());
frame.add(miBoton);
frame.add(etiqueta);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
FrameSwing ventana=new FrameSwing();
}
}
22
Eventos en Java
23
Tipos de eventos en Java
Evento Significado
ComponentEvent Cambio de tamaño, posición o visibilidad de un
componente
FocusEvent Cambio de foco
KeyEvent Operación con el teclado
MouseEvent Operación con el mouse
WindowEvent Cambio de estado de la ventana
ActionEvent Realización de la acción específica asociada al
componente
ChanceEvent Cambio del estado del componente
CaretEvent Cambio en la posición del cursor de inserción en un
componente que gestiona texto.
ListSelectionEvent Cambio en la selección actual de una lista.
24
Oyentes de eventos en Java(Listeners)
•ActionListener
•WindowListener
•MouseListener
•etc
25
Ejemplo: “Pulsame”. Creamos una clase llamada
EjemploEvento que herede de la clase
JFrame.
import java.awt.event.*;
import javax.swing.*;
En el constructor mandamos a llamar el
public class EjemploEvento extends JFrame{ método initComponentes”, el cual nos
private int numeroClick; inicializará todos los componentes.
public EjemploEvento(){
initComponentes();
}
private void initComponentes(){ En el método initComponentes
setSize(300,100); inicializaremos las propiedades de cada
text = new JTextField("0",20); componente, como por ejemplo:
text.setEditable(false); 1)La caja de texto(JTextField) estará
button = new JButton("Pulsame!!");
button.addMouseListener(new MyClickListener()); inicializada con “0” y tamaño 20.
panel = new JPanel(); 2) Escucharemos al botón cuando
panel.add(text); mande el evento “MouseEvent”.
panel.add(button); 3) Agruparemos todos los componentes
setContentPane(panel);
setVisible(true); en un Panel(Jpanel).
} 4) Finalmente haremos visible la
private class MyClickListener extends MouseAdapter{ ventana.
@Override
public void mouseClicked(MouseEvent evt){ numeroClick++;
text.setText(String.valueOf(numeroClick));
} Sobreescribimos el evento
} “MouseClicked” , de tal manera que
cuando se de click en el botón se
private JPanel panel;
private JTextField text; incremente una variable “numeroClick” y
private JButton button; lo visualizamos en el área de texto.
}
26
En la clase principal “main” instanciamos
Ejemplo: “Pulsame”. la clase “EjemploEvento” y ejecutamos el
programa.
27
Los programadores de la “vieja escuela” todavía siguen
haciendo las cosas a “manita”, sin embargo en la
actualidad no se tiene la suficiente paciencia para el
desarrollo de interfaces gráficas es por eso que se crearon
los IDEs los cuales cuentan con una paleta de
herramientas de componentes que nos facilitan el
desarrollo.
NetBeans
28
Paleta de
componentes
gráficos.
Área de diseño
de la interfaz
gráfica
Propiedades de
los componentes. 29
¿Como utilizar NetBeans?
30
Ejemplo Swing: Convertidor Celsius a Fahrenheit
Creamos un nuevo
proyecto”Aplicación Java” y
damos clic en siguiente.
31
Ejemplo Swing: Convertidor Celsius a Fahrenheit
32
Ejemplo Swing: Convertidor Celsius a Fahrenheit
Agregamos un
“Formulario JFrame”
al proyecto.
33
Ejemplo Swing: Convertidor Celsius a Fahrenheit
Asignamos el nombre al
formulario:”JFrame” y
damos clic en terminar.
34
Ejemplo Swing: Convertidor Celsius a Fahrenheit
En la ventana de
propiedades asignamos
el título al JFrame:
Convertidor Grados.
35
Ejemplo Swing: Convertidor Celsius a Fahrenheit
Podemos agregar un
JPanel (borde) para
agrupar los componentes,
en la propiedad “border” del
JPanel y escoger la opción
borde con título, entonces
le agregamos el titulo
Celsius a Fahrenheit.
36
Ejemplo Swing: Convertidor Celsius a Fahrenheit
2 JLabel
2 JTextField
2 JButton
37
Ejemplo Swing: Convertidor Celsius a Fahrenheit
Generamos el
evento para los dos
botones.
38
Ejemplo Swing: Convertidor Celsius a Fahrenheit
En el método del
evento será donde
vamos a realizar las
conversiones de
celsius a fahrenheit.
39
Ejemplo Swing: Convertidor Celsius a Fahrenheit
40
Ejemplo Swing: Convertidor Celsius a Fahrenheit
41
Ejemplo Swing: Visor de imágenes con JRadioButton
42
Ejemplo Swing: Visor de imágenes con JRadioButton
43
Ejemplo Swing: Visor de imágenes con JRadioButton
En el Jlabel en la propiedad de
Icon damos clic en el botón
con los tres puntos.
44
Ejemplo Swing: Visor de imágenes con JRadioButton
45
Ejemplo Swing: Visor de imágenes con JRadioButton
46
Ejemplo Swing: Visor de imágenes con JRadioButton
En el constructor de la clase
Jframe creamos un grupo de
radio botones con la clase
ButtonGroup, de tal manera
que sólo podamos
seleccionar un solo radio
botón.
También establecemos al
Jlabel, el cual tiene por
nombre de variable
“Imagen”, el método setIcon
le damos la ruta en donde
se encuentra la imagen
“gato.png”.
47
Ejemplo Swing: Visor de imágenes con JRadioButton
Implementamos el
método createImageIcon
para verificar si existe la
imagen dentro del
paquete, en caso de que
no exista la imagen
mandaría un mensaje de
error.
48
Ejemplo Swing: Visor de imágenes con JRadioButton
En cada evento
asignamos la
correspondiente
imagen
49
Ejemplo Swing: Visor de imágenes con JRadioButton
50
Ejemplo Swing: Visor de imágenes con JComboBox
51
Ejemplo Swing: Visor de imágenes con JComboBox
De la misma manera que en
el ejemplo con jRadioButton
creamos un nuevo proyecto y
agregamos dos paquetes uno
“src” , el cual contendrá un
formulario Jframe, otro
paquete llamado imágenes,
el cual contendrá las
imágenes.
1 Jlabel donde
visualizaremos las imágenes.
52
Ejemplo Swing: Visor de imágenes con JComboBox
53
Ejemplo Swing: Visor de imágenes con JComboBox
54
Ejemplo Swing: Visor de imágenes con JComboBox
55
Ejemplo Swing: Visor de imágenes con JComboBox
En la clase JFrame
agregamos un arreglo tipo
String el cual tendrá los
nombres de cada imagen.
En el evento del
JComboBox nuevamente
utilizamos el método
“setIcon” para visualizar la
imagen.
57
Seleccionamos en
Categorías: “Java”
En Proyectos:
“Aplicación Java”
Clic en botón
“Siguiente”
58
Asignamos nombre
al proyecto: “ElejirColor”
Quitamos la selección
de clase principal.
59
En el proyecto creamos
un Formulario Frame
60
Ejemplo de jColorChooser en NetBeans.
En la paleta de
herramientas
seleccionamos un botón
y un área de texto y
arrastramos a nuestro
JFrame.
61
Ejemplo de jColorChooser en NetBeans.
De la Paleta seleccionamos
el componente “Selector de
color” y lo arrastramos al
área blanca del proyecto.
62
Ejemplo de jColorChooser en NetBeans.
Para generar un
evento en el botón
damos clic en el
botón derecho del
mouse: Eventos-
>Action-
>actionPerformed.
63
Ejemplo de jColorChooser en NetBeans.
65
Ejemplo de jColorChooser.
66
Ejemplo Swing: Manejo de múltiples Frames
Creamos un nuevo
proyecto”Aplicación Java” y
damos clic en siguiente.
67
Ejemplo Swing: Manejo de múltiples Frames
68
Ejemplo Swing: Manejo de múltiples Frames
Agregamos un
“Formulario JFrame”
al proyecto.
69
Ejemplo Swing: Manejo de múltiples Frames
Asignamos el nombre al
formulario:”VentanaPrincipal”
y damos clic en terminar.
70
Ejemplo Swing: Manejo de múltiples Frames
71
Ejemplo Swing: Manejo de múltiples Frames
72
Ejemplo Swing: Manejo de múltiples Frames
En el frame
“VentanaPrincipal”,
dibujamos dos
botones, uno con
el texto “Ventana
1” y el otro con el
texto “Ventana 2”
73
Ejemplo Swing: Manejo de múltiples Frames
En el frame “Ventana1”,
insertamos un jLabel con
el texto “Te encuentras en
ventana 1” y un jButton
con el texto “Regresar a
principal”.
74
Ejemplo Swing: Manejo de múltiples Frames
En el frame “Ventana2”,
insertamos un jLabel con
el texto “Te encuentras en
la ventana 2” y un jButton
con el texto “Regresar a
principal”.
75
Ejemplo Swing: Manejo de múltiples Frames
En el frame
“VentanaPrincipal”
generamos el evento
para los dos botones.
76
Ejemplo Swing: Manejo de múltiples Frames
y establecemos la propiedad
setVisible a “true” para
visualizar la ventana
77
Ejemplo Swing: Manejo de múltiples Frames
y establecemos la propiedad
setVisible a “true” para
visualizar la ventana
78
Ejemplo Swing: Manejo de múltiples Frames
Al ejecutar la aplicación
seleccionamos el frame
“VentanaPrincipal” como clase
principal.
79
Ejemplo Swing: Manejo de múltiples Frames
Al ejecutar la
aplicación
observarán que las
ventanas aparecen
traslapadas
80
Ejemplo Swing: Manejo de múltiples Frames
Utilizamos el método
dispose() para que la
ventana actual se
destruya cuando se
abra una nueva
81
Ejemplo Swing: Manejo de múltiples Frames
Generamos el
evento para el botón
“Regresar a
principal” tanto en la
ventana1 como en la
ventana2
82
Ejemplo Swing: Manejo de múltiples Frames
En el método que
maneja el evento,
creamos una instancia
a la clase de la
“VentanaPrincipal”,
establecemos como
visible a
VentanaPrincipal y
usamos el método
dispose() para terminar
a la ventana que se
encuentra en ejecución.
83
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
En la ventana principal
insertamos un
componente jMenuBar.
Modificamos su
84
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
85
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
Agregamos dos
elementos al menú
“Aplicaciones”,
pulsamos botón
derecho sobre el ítem
“Aplicaciones” y
seleccionamos del
submenú “Añadir de
paleta”, “Elemento de
menú”.
86
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
87
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
88
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
Generamos eventos
para cada uno de los
elementos
89
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
En los métodos
manejadores de los
eventos escribimos el
mismo código que
utilizamos para el
manejo de las ventanas
por medio de botones.
90
Ejemplo Swing: Manejo de múltiples Frames,
utilizando la barra de menú
91
Recursos
JTable
https://www.youtube.com/watch?v=6GMdqSO7OnQ
https://www.youtube.com/watch?v=jPfKFm2Yfow
https://www.youtube.com/watch?v=ANWmfnT2zb4
JFreeChart
https://www.youtube.com/watch?v=4ijB9BAFuIw
https://www.youtube.com/watch?v=zS8pW1lPk5k
https://jonathanmelgoza.com/blog/como-hacer-graficos-con-java/
Progress Bar
https://www.youtube.com/watch?v=-1LiUiYcWW0
92
Uso del componente JTable
Proceso para agregar a una tabla
1.- Establecer el modelo
JTable TabEmpleados=new JTable();
DefaultTableModel modeloT=new DefaultTableModel();
TabEmpleados.setModel(modeloT);
2.- Agregar columnas y títulos a la tabla
modeloT.addColumn("Nombre");
modeloT.addColumn("Direccion");
modeloT.addColumn("Edad");
Object[] columna=new Object[3];
3.-
93
Patrones de Diseño
94
Patrones de Diseño
• Singleton
• MVC(Modelo Vista Controlador)
• DAO(Data Access Object)
95
Patrón Singleton
96
Ejemplo Singletón
Paso de objetos entre frames
Diseñar un Jframe
que contenga los
botones que se
muestran
97
Crear una clase llamada
controladora, en esta se
definirá nuestro patrón de
diseño singleton que nos
permitirá pasar entre los
diferentes Jframes nuestro
ArrayList.
98
• Crear un evento para el botón “Llenar arreglo con datos”
• En el método del evento, escribir el siguiente código
Se obtiene la
instancia a
nuestra clase
controladora
100
Asociamos un evento al botón visualizar, para que al pulsarlo aparezcan
todos los datos almacenados en el arreglo en el JTextArea
Se obtiene la
instancia a
nuestra clase
controladora
101
Regresamos a la ventana
principal y asociamos un
evento al botón Visualizar
datos para que el
pulsarlo se muestre la
subventana diseñada
anteriormente
102
Patrón de Diseño MVC (Modelo-Vista-Controlador)
103
Comunicación entre las capas del MVC
104
Diagrama de clases ejemplo MVC
105
106
Patrón DTO o VO (Value Object)
107
Patrón de Diseño DAO
108
MVC-DAO-VO(DTO)
109
CONEXIÓN A BASE DE
DATOS EN MYSQL
110
¿Qué es JDBC?
(Java Data Base Connection)
En un API (colección de interfaces y clases abstractas) incluido dentro del lenguaje Java
para el acceso a bases de datos relaciones. JDBC está escrito completamente en Java
por lo que es independiente de la plataforma, es decir, puede manejar BD de Oracle,
sybase, SQL Server, mysql, etc.
111
Las interfaces de JDBC se encuentran integradas en los paquetes:
• java.sql
• Javax.sql
113
Paso 2. Crear la cadena de conexión a la BD:
La clase DriverManager permite obtener objetos Connection con la base de datos.
Para conectarse es necesario proporcionar:
• URL de conexión, que incluye:
✓ Nombre del host donde esta la base de datos, si es nuestra propia máquina será localhost
✓ Nombre de la base de datos a usar.
✓ Puerto por donde escucha el servidor de BD, por defecto para MySQL es el 3306
• Nombre del usuario en la base de datos.
• Contraseña del usuario en la base de datos.
Métodos sobrecargados para getConnection
• getConnection(String url)
• Connection getConnection(String url, Properties info)
• Connection getConnection(String url, String user, String
password)
Ejemplo de conexión:
static String bd = "bdempleado";
static String login = "root";
static String password = "";
static String url =
"jdbc:mysql://localhost:3306/"+bd+"?useUnicode=true+use"+"JDBCCompliantTimezoneShift=true&useLe
gacyDatetimeCode=false&"+"serverTimezone=UTC";
String nombre=“Juan”;
String puesto=“Subdirector”;
double salario=1345.20;
try{
Statement Insercion = conex.createStatement();
int filas= Insercion.executeUpdate("INSERT INTO empleado VALUES
('"+nombre+"', '"+puesto+"', '"+salario+"')");
Insercion.close();
conex=null;
} catch (SQLException e) {}
117
Utilizando PreparedStatement: Este interfaz, al igual que el interfaz Statement, nos
permite ejecutar sentencias SQL sobre una conexión establecida con una base de
datos.
118
Para los objetos PreparedStatement, los métodos executeQuery() y executeUpdate() no
toman ningún tipo de argumentos