inv unidad 1 topicos avanzados de programacion
-
Upload
anel-sosahagane -
Category
Engineering
-
view
78 -
download
6
Transcript of inv unidad 1 topicos avanzados de programacion
2016
Anel Verónica Sosa Mejía
Tópicos avanzados de Programación
18-2-2016
Unidad 1 EVENTOS
1
1
Contenido
EVENTOS ........................................................................................... 2
1.1 Tipos de eventos Eventos de bajo nivel.................................... 2
Eventos semánticos. .................................................................... 3
Generación y propagación de eventos. .......................................... 4
Métodos de control de eventos. .................................................... 4
Creación de eventos. ...................................................................... 6
EJEMPLO DE CREACION DE EVENTOS: .............................................. 7
BIBLIOGRAFIA ................................................................................. 15
2
2
EVENTOS Objetivo: Resolver problemas utilizando programación de eventos. Un evento es la notificación
que hace un elemento gráfico cuando el usuario interactúa con él. Por lo tanto, si se realiza alguna
acción sobre algún elemento de la interfaz, se dice que se ha generado un evento en dicho
elemento.
Tipos de eventos Eventos de bajo nivel Representan entradas o interacciones de bajo nivel con elementos del interfaz gráfico (Cambio de
tamaño, cambio del foco, operación con el ratón o con el teclado).
Tabla 1Lista de eventos de bajo nivel:
Ilustración 1 Ejemplo de KeyEvent
Ilustración 2 ejemplo de MouseEvent
3
3
Eventos semánticos.
Eventos de alto nivel que encapsulan la semántica del modelo de componentes del interfaz
de usuario (Hacer una acción, un cambio de estado en un elemento, etc.). No están
relacionados con una clase específica de componente sino que pueden aplicarse a todos los
componentes que implementen un modelo semántico similar.
Tabla 2
Ilustración 3ELEMENTOS SELECCIONADOS
ILUSTRACIÓN 3CAMBIOS EN LA SELCCION ACTUAL DE UNA LISTA
4
4
Generación y propagación de eventos.
El paquete java.awt.event es el que contiene la mayor parte de las clases e interfaces de eventos.
El modelo de delegación de eventos es un concepto que trabaja de la siguiente manera: Una
fuente genera un evento y lo envía a uno a más oyentes o auditores, que han estado simplemente
esperando hasta que reciben ese evento y una vez recibido lo procesan y lo devuelven. Una
fuente es un objeto que genera un evento. Esto ocurre cuando cambia de alguna manera el
estado interno de ese objeto. Las fuentes pueden generar más de un tipo de eventos. Una fuente
tiene que ir acompañada de auditores para que estos reciban las notificaciones sobre el tipo
específico de evento, cada tipo de evento tiene su propio método de registro. Un auditor es un
objeto que es avisado cuando ocurre un evento. Tiene dos requisitos principales. Primero tiene
que ser registrado o ir acompañado por una o más fuentes para recibir notificaciones sobre los
tipos específicos de eventos. Segundo, tiene que implementar métodos para recibir y procesar
notificaciones.
Métodos de control de eventos.
Ejemplos de componentes que pueden generar eventos:
Button. Genera eventos de acción (ActionEvent) cuando se
presiona el botón.
Checkbox. Genera eventos de elementos (ItemEvent)
cuando se selecciona o deselecciona un checkbox.
Choice. Genera eventos de elementos cuando se cambia de opción
choice. List. Genera eventos de acción cuando se hace doble click sobre un elemento, genera
eventos de elemento cuando se selecciona o deselecciona un elemento.
Ilustración 4ActionEvent
5
5
Menu Item. Genera eventos de acción cuando se selecciona un elemento de menú; genera
eventos del elemento cuando se selecciona o se deselecciona un elemento de un menú de
opciones.
Scrollbar. Genera eventos de ajuste
(AdjustmentEvent)
Cuando se manipula el scrollbar.
Text components. Genera eventos de texto
(TextEvent) cuando el usuario introduce un carácter.
Window. Genera eventos de ventana (WindowEvent)
cuando una ventana se activa,
Se cierra, se desactiva, se minimiza, se maximiza
, se abre o se sale de ella.
Ilustración 5Ejemplo de scroll bars
Ilustración 6Ejemplo de ventanas
6
6
Creación de eventos. Para la creación de eventos es necesario definir sobre que componente se desea crear dicho
evento.
Tabla 3Clases de eventos principales en java.awt.event
7
7
EJEMPLO DE CREACION DE EVENTOS: Trata de un JPanel donde puse 4 JButon cada que se le aplana a un boton debe de dibujar en el panel central su respectivo dibujo esto gracias a un BorderLayout pude poner los botones en el sur y un panel de dibujo en el centro para poder mandar a llamar cada metodo , en cada boton , necesite una clase privada en la clase de Aplicacion llamada manejadora de action events ala que se le implementa un actionlistener que es el encargado de recibir la accion , guardarla y esperar a que me pida ejecutarla n cada boton
8
8
9
9
package practica2;
public class Practica2{
public static void main(String[] args) {
Aplicacion aplicacion=new Aplicacion();
}
}
package practica2;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class MiPanel extends JPanel {
String Poligono, Ovalo, Arco, Imagen;
int xPoints[] = new int[4];
int yPoints[] = new int[4];
int x;
int y;
Image img;
int width;
int height;
int startAngle;
10
10
int arcAngle;
int ancho;
int alto;
public void limpiar() {
x = 0;
y = 0;
img = null;
width = 0;
height = 0;
startAngle = 0;
arcAngle = 0;
ancho = 0;
alto = 0;
xPoints[0] = 0;
xPoints[1] = 0;
xPoints[2] = 0;
xPoints[3] = 0;
yPoints[0] = 0;
yPoints[1] = 0;
yPoints[2] = 0;
yPoints[3] = 0;
}
public MiPanel() {
setBackground(Color.RED);
}
11
11
void dibujaPol() {
limpiar();
xPoints[0] = getWidth() / 4;
xPoints[1] = (getWidth() / 4) * 3;
xPoints[2] = (getWidth() / 4) * 3;
xPoints[3] = (getWidth() / 4);
yPoints[0] = getHeight() / 4;
yPoints[1] = getHeight() / 4;
yPoints[2] = (getHeight() / 4) * 3;
yPoints[3] = (getHeight() / 4) * 3;
repaint();
}
void dibujaOvalo() {
limpiar();
x = 0;
y = this.getHeight()/4 ;
ancho = this.getWidth();
alto = this.getHeight() / 2;
repaint();
}
void dibujaArco() {
limpiar();
width = 250;
12
12
height = 200;
startAngle = 65;
arcAngle = 90;
repaint();
}
void dibujaImagen() {
limpiar();
img = Toolkit.getDefaultToolkit().getImage("imagen.jpg");
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillPolygon(xPoints, yPoints, 4);
g.setColor(Color.ORANGE);
g.fillOval(x,y, ancho,alto);
g.setColor(Color.GREEN);
g.fillArc(this.getWidth() / 2, this.getHeight() / 2, width, height, startAngle, arcAngle);
g.setColor(Color.BLACK);
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
package practica2;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
13
13
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Aplicacion extends JFrame {
JButton btn1, btn2, btn3, btn4;
JPanel panelBotones;
MiPanel panelDibujo;
public Aplicacion() {
setLayout(new BorderLayout());
ManejadoraActionEvents manejador = new ManejadoraActionEvents();
btn1 = new JButton("Poligono");
btn2 = new JButton("Ovalo");
btn3 = new JButton("Arco");
btn4 = new JButton("Imagen");
btn1.addActionListener(manejador);
btn2.addActionListener(manejador);
btn3.addActionListener(manejador);
btn4.addActionListener(manejador);
panelBotones = new JPanel();
panelBotones.setLayout(new FlowLayout());
panelBotones.add(btn1);
panelBotones.add(btn2);
14
14
panelBotones.add(btn3);
panelBotones.add(btn4);
add(panelBotones, BorderLayout.SOUTH);
panelDibujo = new MiPanel();
add(panelDibujo, BorderLayout.CENTER);
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private void setLayout(BorderLayout borderLayout) {
}
private class ManejadoraActionEvents implements ActionListener {
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == btn1) {
panelDibujo.dibujaPol();
} else if (ae.getSource() == btn2) {
panelDibujo.dibujaOvalo();
} else if (ae.getSource() == btn3) {
panelDibujo.dibujaArco();
} else if (ae.getSource() == btn4) {
panelDibujo.dibujaImagen();
15
15
}
}
}
}
BIBLIOGRAFIA
• Luis Joyanes Aguilar, Programación En C/C++Java Y Uml, 1, Mcgraw Hill,
México, 2010 • John Dean, Introducción A La Programación Con Java, 1, Mcgraw Hill, México,
2009
•Deitel Y Deitel, C / C++ Y Java Cómo Programar, 4ta Edición, Prentice Hall,
México, 2004
• http://leo.ugr.es/J2ME/TOOLS/index.html
•