Sie sind auf Seite 1von 12

Tpicos Selectos de Programacin

UNIDAD I.- Elementos de Interfaces Grficas


___________________________________________________________________ LECCIN 1.4.- Programacin orientada a Eventos ___________________________________________________________________ 1.4.1.-Manejo de Oyentes

Un evento es resultado de la ejecucin de una accin dentro de un entorno grfico. Los eventos son objetos. Los componentes (botones, mens, campo de texto) son generadores de eventos (origen) Un origen de eventos debe registrar objetos oyentes que manipulen a los eventos

El paquete java.awt.event proporciona clases base para generar eventos. Contiene una serie de interfaces para implementar objetos oyentes. Adicionalmente proporciona un grupo de clases adaptadoras para facilitar la codificacin.

Rafael Rivera Lpez 1

Tpicos Selectos de Programacin

Registro de Oyentes Cada origen de evento debe indicar (registrar) a su objeto Oyente

Rafael Rivera Lpez 2

Tpicos Selectos de Programacin

Rafael Rivera Lpez 3

Tpicos Selectos de Programacin 1.4.2.- Eventos Bsicos Evento de Botn

Evento de Ventana

Oyente de Ventana

La clase oyente debe implementar todos los mtodos de la interfaz WindowListener, aunque no los use.

Rafael Rivera Lpez 4

Tpicos Selectos de Programacin 1.4.3.- Clase Adaptadora Es muy tedioso implementar interfaces si solo se ocuparn pocos mtodos. Java proporciona clases adaptadoras que ya implementaron todos los mtodos de las interfaces.

Para usarlas deben heredar a la clase oyente. La clase oyente entonces hereda la clase adaptadora para el evento WindowAdapter es la clase adaptadora para WindowEvent.

1.4.3.- Oyente Interno Annimo

Se puede crear un oyente annimo utilizando la clase adaptadora.

Rafael Rivera Lpez 5

Tpicos Selectos de Programacin 1.4.5.- Eventos de teclado Las teclas solo genera eventos de la clase KeyEvent

Un evento de teclado tiene los siguientes elementos:

import java.awt.*; import java.awt.event.*; public class EventoTeclado extends Frame{ private int iX; private int iY; private int diametro; private Color elColor; public EventoTeclado(){ super("Eventos de teclado"); setSize(400,400); setBackground(Color.CYAN); elColor=Color.BLACK; diametro=50; iX=iY=100;

Rafael Rivera Lpez 6

Tpicos Selectos de Programacin


addEventos(); setVisible(true);

public void paint(Graphics g){ g.setColor(elColor); g.fillOval(iX, iY, diametro, diametro); if(elColor==Color.BLUE){ g.fillRect(iX+100, iY+100, diametro,diametro); } } public void addEventos(){ addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ int codigo=e.getKeyCode(); System.out.println("codigo="+codigo); switch(codigo){ case KeyEvent.VK_UP: iY-=5; break; case KeyEvent.VK_DOWN: iY+=5; break; case KeyEvent.VK_RIGHT: iX+=5; if(iX>(400-diametro)) iX=400-diametro; break; case KeyEvent.VK_LEFT: iX-=5; if(iX<0) iX=0; break; case KeyEvent.VK_PLUS : if(diametro<200) diametro+=5; break; case KeyEvent.VK_MINUS : if(diametro>10) diametro-=5; break; case KeyEvent.VK_B : elColor = Color.WHITE; break;

Rafael Rivera Lpez 7

Tpicos Selectos de Programacin


case KeyEvent.VK_A : elColor = Color.BLUE; break; case KeyEvent.VK_V : elColor = Color.GREEN; } repaint(); }); } } }

1.4.6.- Eventos de ratn

Las interfaces para oyentes de eventos de un ratn tienen los siguientes mtodos.

Con getX() y getY() se obtiene la posicin del ratn en el momento de generar el evento

Rafael Rivera Lpez 8

Tpicos Selectos de Programacin


import java.awt.*; import java.awt.event.*; public class EventoRaton extends Frame{ private int iX; private int iY; private boolean bPulsado; private MenuItem salir; private MenuItem abrir; private MenuItem guardar; private VentanaDialogo dialogo; public EventoRaton(){ super("Eventos de raton"); setSize(400,400); setBackground(Color.CYAN); inicializarAtributos(); addMenu(); addEventos(); setVisible(true); } public void inicializarAtributos(){ iX=iY=100; dialogo = new VentanaDialogo("Salir del programa",this); } public void paint(Graphics g){ if(bPulsado){ g.setColor(Color.BLACK); g.fillOval(iX, iY, 20, 20); } g.drawString("("+iX+","+iY+")", 20, 380); } public void addMenu(){ MenuBar barra = new MenuBar(); Menu archivo = new Menu("Archivo"); barra.add(archivo); salir = new MenuItem("Salir"); abrir = new MenuItem("Abrir"); guardar = new MenuItem("Guardar"); archivo.add(abrir); archivo.add(guardar); archivo.addSeparator(); archivo.add(salir);

Rafael Rivera Lpez 9

Tpicos Selectos de Programacin


setMenuBar(barra); } public void addEventos(){ addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ dialogo.setVisible(true); } }); abrir.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ abrirArchivo(); } }); guardar.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ guardarArchivo(); } }); salir.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ dialogo.setVisible(true); } }); addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ iX=e.getX(); iY=e.getY(); bPulsado=true; repaint(); } public void mouseReleased(MouseEvent e){ bPulsado=false; repaint(); }

}); addMouseMotionListener(new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ iX=e.getX(); iY=e.getY(); repaint(); } public void mouseDragged(MouseEvent e){ iX=e.getX(); iY=e.getY();

Rafael Rivera Lpez 10

Tpicos Selectos de Programacin


bPulsado=true; repaint();

} } });

public void abrirArchivo(){ FileDialog dialogo = new FileDialog(this,"Abrir Archivo",FileDialog.LOAD); dialogo.setFile("*.java"); dialogo.setVisible(true); String nombre = dialogo.getDirectory()+ dialogo.getFile(); System.out.println("El nombre es "+nombre); } public void guardarArchivo(){ FileDialog dialogo = new FileDialog(this,"Guardar Archivo",FileDialog.SAVE); dialogo.setFile("*.java"); dialogo.setVisible(true); String nombre = dialogo.getDirectory()+ dialogo.getFile(); System.out.println("El nombre es "+nombre); } } import java.awt.*; import java.awt.event.*; public class VentanaDialogo extends Dialog{ private Button boton1; private Button boton2; public VentanaDialogo(String titulo,Frame padre){ super(padre,titulo,true); setSize(200,100); setLocation(100,100); addComponentes(); addEventos(); } public void addComponentes(){ boton1 = new Button("Aceptar"); boton2 = new Button("Cancelar");

Rafael Rivera Lpez 11

Tpicos Selectos de Programacin


Panel p = new Panel(); add(new Label("Desea salir?"),"North"); p.add(boton1); p.add(boton2); add(p,"South"); } public void addEventos(){ boton1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } }); boton2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ setVisible(false); } }); } }

Rafael Rivera Lpez 12

Das könnte Ihnen auch gefallen