La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.

Presentaciones similares


Presentación del tema: "0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI."— Transcripción de la presentación:

1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI Objetos y Eventos Dr. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

2 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS Cada componente de una GUI está asociada a un objeto gráfico de alguna subclase de Component. Un objeto fuente del evento, está asociado a una componente reactiva de la GUI, puede percibir un evento externo provocado por una acción del usuario y reaccionar disparando un evento interno. Un objeto evento se crea implícitamente, asociado a un evento interno disparado por un objeto fuente del evento. Un objeto oyente (listener) se registra a un objeto fuente de evento para responder a la acción del usuario sobre una componente de la GUI. Introducción a la Programación Orientada a Objetos IPOO - 2015 2

3 3 OBJETO FUENTE Component Evento Interno OBJETO EVENTO EventObject percibe dispara crea Evento Externo El usuario realiza una acción sobre una componente reactiva que genera un evento externo El objeto fuente de evento asociado a la componente reactiva dispara un evento interno creando objetos de alguna subclase de EventObject

4 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS La clase de un objeto fuente de evento determina las clases de los objetos evento que se crearán implícitamente: Introducción a la Programación Orientada a Objetos IPOO - 2015 4 Clase de los objetos Fuente de evento Clases de los objetos evento JButtonActionEvent JCheckBoxActionEvent, ItemEvent JRadioButtonActionEvent, ItemEvent JMenuItemActionEvent JTextFieldActionEvent, KeyEvent JComboBoxActionEvent, ItemEvent

5 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS Cada subclase de EventObject define atributos y métodos adecuados para un tipo particular de acción del usuario, como por ejemplo, mover el mouse sobre un panel, oprimir una tecla o activar un botón. En cada uno de estos casos se creará un objeto evento de una clase específica. Introducción a la Programación Orientada a Objetos IPOO - 2015 5

6 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS Los objetos de las clases JButton, JTextField, JComboBox son objetos fuente de evento que crean objetos evento de clase ActionEvent. Esto es, cuando el usuario realiza una acción sobre la componente asociada al objeto fuente de evento, este crea un objeto de clase ActionEvent. La clase del objeto oyente que escuche estos eventos deben implementar la interface ActionListener del paquete j ava.awt.event. Introducción a la Programación Orientada a Objetos IPOO - 2015 6

7 7 OBJETO FUENTE Component Evento Interno OBJETO EVENTO EventObject percibe dispara crea Evento Externo El objeto oyente es instancia de una clase que implementa una interface y redefine el método manejador del evento OBJETO Oyente ActionListener registrado a El objeto evento es un parámetro para el método manejador del evento

8 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS La clase del oyente implementa a una interface redefiniendo al método manejador del evento de acuerdo al comportamiento esperado en respuesta a la acción del usuario. El manejador del evento recibe como parámetro a un objeto evento creado implícitamente. Cuando un objeto fuente de evento dispara un evento interno, crea objetos evento de alguna subclase de EventObject provista en el paquete j ava.awt.event. Introducción a la Programación Orientada a Objetos IPOO - 2015 8

9 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS La interface define uno o más métodos manejadores que deben ser implementados considerando el comportamiento esperado en respuesta a la acción del usuario. La lista de parámetros de un manejador de eventos siempre consiste en un argumento del tipo de clase evento. Introducción a la Programación Orientada a Objetos IPOO - 2015 9

10 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS Introducción a la Programación Orientada a Objetos IPOO - 2015 10 Objeto EventoInterface de oyenteManejador ActionEventActionListeneractionPerformed(ActionEvent) ItemEventItemListeneritemStateChanged(ItemEvent) MouseEventMouseListenermousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) KeyEventKeyListenerkeyPressed(KeyEvent) keyRealesed(KeyEvent) keyTyped(KeyEvent)

11 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS Mostrar una ventana con un panel que cambiará de color según los diferentes eventos del mouse que se produzcan como consecuencia de las acciones del usuario. En otro panel se muestra la acción del usuario y la posición del indicador del mouse sobre la componente. Introducción a la Programación Orientada a Objetos IPOO - 2015 11

12 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 12 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ControlMouse extends JFrame{ private JPanel panelMouse; private JLabel eventoMouse; private Container contenedor; Introducción a la Programación Orientada a Objetos IPOO - 2015

13 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 13 public ControlMouse() { contenedor = getContentPane(); contenedor.setLayout(new GridLayout(2,0)); panelMouse = new JPanel(); panelMouse.setBackground(Color.WHITE); panelMouse.setPreferredSize (new java.awt.Dimension(300, 150)); eventoMouse = new JLabel(); eventoMouse.setPreferredSize (new java.awt.Dimension(300,70)); … }

14 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 14 public ControlMouse() { … OyenteMouse escuchaMouse = new OyenteMouse(); panelMouse.addMouseListener(escuchaMouse); contenedor.add(panelMouse); contenedor.add(eventoMouse); } Observemos que el oyente queda registrado al panel, de modo que reaccionará ante los eventos del mouse producidos ante las acciones del usuario sobre el panel.

15 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 15 class OyenteMouse implements MouseListener{ public void mouseClicked (MouseEvent e) { String s = new String(); eventoMouse.setText(s.format (“Cliqueó en [%d,%d]", e.getX(), e.getY())); panelMouse.setBackground(Color.BLUE); } … }

16 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 16 class OyenteMouse implements MouseListener{ … public void mouseEntered (MouseEvent e) { String s = new String(); eventoMouse.setText(s.format (“Entró en[%d,%d]", e.getX(), e.getY())); panelMouse.setBackground(Color.RED); } … }

17 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 17 class OyenteMouse implements MouseListener{ … public void mouseExited (MouseEvent e) { String s = new String(); eventoMouse.setText(s.format ("Salió en [%d,%d]", e.getX(), e.getY())); panelMouse.setBackground(Color.GREEN); } … }

18 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 18 class OyenteMouse implements MouseListener{ … public void mouseReleased (MouseEvent e { String s = new String(); eventoMouse.setText(s.format ("Soltó en [%d,%d]", e.getX(), e.getY())); panelMouse.setBackground(Color.MAGENTA); } … }

19 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 19 class OyenteMouse implements MouseListener{ … public void mousePressed (MouseEvent e) { String s = new String(); eventoMouse.setText(s.format ("Presionó en [%d,%d]", e.getX(), e.getY())); panelMouse.setBackground(Color.YELLOW); } }

20 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 20 public class controlMouse extends JFrame { private JPanel panelMouse; private JLabel eventoMouse; … class OyenteMouse implements MouseListener{ public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } java.awt.event.MouseListener mouseClicked(e:MouseEvent): void mousePressed(e:MouseEvent): void mouseReleased(e:MouseEvent): void mouseEntered(e:MouseEvent): void mouseExited(e:MouseEvent): void

21 21 private void hacerGUI(){ getContentPane().setLayout(new GridLayout(2,0)); panelMouse = new JPanel(); panelMouse.setBackground(Color.WHITE); panelMouse.setPreferredSize(new java.awt.Dimension(300, 150)); eventoMouse = new JLabel(); eventoMouse.setPreferredSize(new java.awt.Dimension(300,70)); OyenteMouse escuchaMouse = new OyenteMouse(); panelMouse.addMouseListener(escuchaMouse); panelMouse.addMouseMotionListener(escuchaMouse); getContentPane().add(panelMouse); getContentPane().add(eventoMouse); } … }

22 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 22 public class controlMouse extends JFrame { private JPanel panelMouse; private JLabel eventoMouse;; … class OyenteMouse implements MouseListener, MouseMotionListener{ public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e){ } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }

23 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 EVENTOS DEL MOUSE 23 public class controlMouse extends JFrame { private JPanel panelMouse; private JLabel eventoMouse;; … class OyenteMouse implements MouseListener, MouseMotionListener{ public void mouseDragged(MouseEvent e){ String s = new String(); eventoMouse.setText(s.format("Arrastró a [%d,%d]", e.getX(),e.getY()));} public void mouseMoved(MouseEvent e){ String s = new String(); eventoMouse.setText(s.format("Se movió a [%d,%d]", e.getX(),e.getY()));} }

24 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS Con frecuencia una interface de eventos brinda más servicios que los que necesitamos. Por ejemplo, la interface MouseListener ofrece cinco servicios, si nuestra GUI solo va a reaccionar ante un click del mouse tenemos que definir el código de mouseClicked, los otros cuatro quedan sin especificar. Sin embargo, si definimos una clase que implementa a esta interface es necesario implementar todos los servicios provistos. Introducción a la Programación Orientada a Objetos IPOO - 2015 24

25 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 OBJETOS Y EVENTOS Un adaptador es una clase que implementa todos los métodos de una interface, de modo que en lugar de implementar una interface podemos extender la clase adaptador. Para la interface MouseListener Java brinda la clase MouseAdapter con cuerpo vacío para los cinco métodos. Para MouseMotionListener la clase adaptador es MouseMotionAdapter. Introducción a la Programación Orientada a Objetos IPOO - 2015 25

26 Introducción a la Programación Orientada a Objetos IPOO - 2015 26 OBJETO FUENTE Component Evento Interno OBJETO EVENTO EventObject percibe dispara crea Evento Externo El objeto oyente es instancia de una clase que implementa una interface y redefine el método responsable de reaccionar ante la acción del usuario OBJETO Oyente ActionListener registrado a El objeto evento es un parámetro para el método manejador del evento


Descargar ppt "0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI."

Presentaciones similares


Anuncios Google