SlideShare una empresa de Scribd logo
PROGRAMACION EN JAVA ING. ZENAIDA HUANCA LLAMO COMPONENTES SWING
Diseño de Interfaces de Usuario 1. Introducción a Swing Compuesto de componentes gráficos ajustables y en los que el comportamiento (look-and-feel) se fija en tiempo de ejecución (admite diferentes apariencias). Cerca de 250 componentes Extiende (no reemplaza) los componentes AWT (JButton, JPanel, JTextField) No se pueden/deben mezclar
Swing: Jerarquía de Componentes
Swing: Jerarquía de clases en JBuilder
NetBeans
Swing: Ventanas JFrame
2. Etiquetas e Iconos
2.1 JLabel
2.2 Iconos (ImageIcon)
3. Botones
3.1 JButton
3.2 JToggleButton
3.3 JCheckBox/JRadioButton
3.4 ButtonGroup
4. RANGOS (VALOR)
4.1 JScrollBar
4.2 JProgressBar
4.3 JSlider
5. TEXTO
5.1 JTextField/JPasswordField
5.2 JTextArea
6. ELECCION Componentes que permiten elegir una opción entre una serie de alternativas Se permite selección simple/múltiple El modo de selección múltiple depende del Look&Feel (Shift, Crtl...) JList JComboBox
6.1 JList
6.2 ListModel / DefaultListModel
6.3 JComboBox
6.3 ComboBoxModel / DefaultComboBoxModel
7. Tablas.  JTable  en un  JScrollPane JTable  controla cómo se presentan los datos TableModel  controla los datos en sí mismos. TableModel  dataModel = new  AbstractTableModel () { public int getColumnCount() { return 10; } public int getRowCount() { return 10;} public Object getValueAt(int row, int col) {  return new Integer(row*col); } }; JTable  table = new JTable(dataModel); JScrollPane  scrollpane = new JScrollPane(table); Algunos métodos  en  JTable : public int getSelectedColumn() public int getSelectedRow() public Object getValueAt(int row,   int column)
Ejemplo JTable public class DemoTabla extends JFrame{ ... public DemoTabla(){ Object[][] dat os  = { {"Maria", "Campillo","Snowboarding", new Integer(5),  new Boolean(false)}, {"Elisa", "Heredia","Remo", new Integer(3),  new Boolean(true)}, ... }; String[]  nombresColumnas  = {"Nombre",   "Apellido", "Deporte",     "nº de años","Vegetariano"}; JTable tabl a  = new JTable(dat os ,  nombresColumnas ); JScrollPane scrollPane = new JScrollPane(tabl a ); }//fin del constructor
8. JOptionPane Ventanas de mensajes estándar  que permiten mostrar un mensaje de información al usuario o capturar información. Casi todos los usos de esta clase son llamadas a uno de los métodos  static showXxxDialog   JOptionPane.showMessageDialog(); JOptionPane.showConfirmDialog(); JOptionPane.showOptionDialog)(); JOptionPane.showInputDialog(); Todos los diálogos son  modales  (no continúa la ejecución hasta que no se cierra). Se pueden configurar mediante parámetros: título, mensaje, icono, etc.
Ejemplos  JOptionPane JOptionPane. showMessageDialog (null, "Cuidado con lo que haces", "Consejo", JOptionPane.ERROR_MESSAGE); JOptionPane. showConfirmDialog (null, “Debes elegir uno", “Decide", JOptionPane.YES_NO_OPTION);
Ejemplo  JOptionDialog Object[] opciones = { "Continuar", "Cancelar", "Guardar Estado" }; JOptionPane. showOptionDialog (null,  "Podemos estar en un estado inconsistente",  "¡¡¡OJO!!!",JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, opciones, opciones[0]);
Ejemplo entrada de datos Object [] valores = {"Libro","CD","DVD" }; String respuesta=(String) JOptionPane. showInputDialog ( null,  "Elija el tipo de producto", "Entrada de datos", JOptionPane.QUESTION_MESSAGE, null, valores, valores[0]);
Ejemplo entrada de datos libre Icon icono = new ImageIcon("icons/Question.gif"); String respuesta = (String)JOptionPane. showInputDialog ( null, "Introduzca el nombre que va a borrar",  "Eliminar contacto", JOptionPane.QUESTION_MESSAGE, icono, null,null);
9. Menús JMenuBar JPopupMenu Añadimos un menú Haciendo doble click abrimos el  diseñador de menús   Componente JFileChooser
Diseñador de menús
Asignación del menú al componente Una vez cerrado el diseñador de menús, asignamos el  JMenuBar  al componente que lo contendrá ( JFrame  o  JDialog ). Desde el diseñador El resultado es que en la en la definición de VentanaContador se añada: this. setJMenuBar (jMenuBar1); Propiedades del JFrame o JDialog
10. Modelo de delegación de eventos Los   eventos  se encapsulan en una jerarquía de clases donde la clase raíz es  java.util.EventObject Fuentes  de eventos  ( Source ):  es un objeto que tiene la capacidad de detectar eventos y notificar a los receptores de eventos que se han producido esos eventos mantiene una lista de objetos receptores y los tipos de eventos a los que están suscritos. El programador crea esa lista utilizando llamadas a los métodos  add<TipoEvento>Listener()   (tb  remove ) . Generalmente un componente del interfaz gráfico  Receptores  de eventos  ( Listener ):  es una clase (o una subclase de una clase) que implementa un interfaz receptor específico  java.util.EventListener declara TODOS los métodos adecuados al tratamiento de los eventos de su clase Resultan de utilidad las  clases internas
Modelo de delegación de eventos Emparejamiento entre clases de eventos y definiciones de interfaces. Por ejemplo:   class   MouseEvent   interfaz  MouseListener En  java.awt.Component  existe el método  addMouseListener Adaptadores ( Adapter ): evita tener que escribir todos los métodos del interfaz implementa todos los métodos del interfaz con métodos vacíos una clase receptor puede definirse como una clase que  extiende  una clase Adapter (en lugar de una clase que implementa el interfaz) y sobreescribe los métodos que necesite Ejemplo:   public abstract class  MouseAdapter  implements MouseListener
Interfaces     Listener   M étodos
11. Enlazar el menú Archivo con JFileChooser JFileChooser  es un cuadro de diálogo para archivos. Acción asociada a la opción de menú abrir: public class VentanaContador extends JFrame{ private  JFileChooser  explorador = new JFileChooser();   ... void jMenuItemAbrir_actionPerformed(ActionEvent e) { if (JFileChooser.APPROVE_OPTION ==     explorador. showOpenDialog (this)){ File fichero = explorador. getSelectedFile ();   recuperarDatos(fichero); } } También  showSaveDialog
JFileChooser.showOpenDialog
12.  Clase Graphics La clase Graphics es una clase base abstracta (no se puede instanciar) para todo contexto gráfico que permite a una aplicación dibujar y cargar imágenes. Esta clase permite utilizar métodos de construcción gráfica, generalmente dentro del método Paint(); sin embargo, también podemos tener nuestro propio método gráfico donde hacerlo. La pantalla gráfica depende de la configuración de la pantalla y de la tarjeta de video que tenga el computador.
Métodos de la Clase Graphics drawRect (int x, int y, int width, int height) Dibuja el contorno de un rectángulo cuyas coordenadas de la esquina superior izquierda, el ancho y el alto se dan como parámetros   abstract void drawOval (int x, int y, int width, int height) Dibuja el contorno de un óvalo inscrito en un rectángulo cuyas coordenadas se dan como parámetros.  abstract void drawLine (int x1, int y1, int x2, int y2) Dibuja una línea desde las coordenadas del punto de partida (x1,y1) hasta las coordenadas del punto de llegada (x1,y2)  abstract void drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) Dibuja un arco circular o elíptico dentro del rectángulo especificado en los parámetros. Debe darse además el ángulo de inicio y el ángulo del arco requerido.  abstract void clearRect (int x, int y, int width, int height) Limpia  el area rectangular definido por los parámetros rellenados con el color de fondo encontrado  abstract void
Métodos de la Clase Graphics FillRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight) Dibuja un rectángulo relleno con las esquinas en curva.  abstract void fillRect (int x, int y, int width, int height)  Dibuja un rectángulo relleno   abstract void fill3DRect (int x, int y, int width, int height, boolean raised) Dibuja un rectángulo tridimensional relleno.  abstract void fillOval (int x, int y, int width, int height) Dibuja un óvalo relleno.  abstract void fillArc (int x, int y, int width, int height, int startAngle, int arcAngle) Dibuja un arco circular o elíptico relleno  abstract void drawString (String str, int x, int y) Dibuja el texto dado a partir de la coordenada x,y también dados como parámetros.  abstract void drawRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight) Dibuja el contorno ovalado en las esquinas de un rectángulo dándole además de las coordenadas para un rectángulp, el ancho y el alto de las curvas de las esquinas.  abstract void
Ejemplo aplicativo Clase Graphics public void paint(Graphics g) { g.drawArc(250,50,80,80,0,180); g.drawArc(50,220,80,80,45,90); g.setColor(Color.blue); g.fillArc (150,150, 80, 60, 0, 135); g.setColor(Color.RED); g.fillRect (80,40, 80,30); g.setColor(Color.green); g.fillRoundRect(10,20,50,20,10,10); g.setColor(Color.MAGENTA); g.fill3DRect(20,95,85,85,true); }
13. Respuesta a las acciones del usuario sobre un grupo de controles (botones)   En el estudio de la función respuesta a la acción de  pulsar sobre un botón , o de hacer  doble-clic sobre un elemento de una lista , el objeto  ev  de la clase  ActionEvent , nos proporciona información acerca del suceso que se ha producido, nos dice qué control ha generado el suceso. Por ejemplo, podemos saber mediante la función miembro  getSource  si el suceso procede de la acción sobre un botón, de un control lista, o de un control de edición, etc.
NetBeans public void actionPerformed(java.awt.event.ActionEvent evt) { … .. } JBuilder public void actionPerformed(ActionEvent e) { … }
En el código de la función respuesta  actionPerformed , podemos saber si el control sobre el que se ha actuado es una instancia de la clase  Button  mediante el operador   instanceof Object control=evt.getSource();  if(control instanceof JButton) {  System.out.println(&quot;Se ha pulsado un botón&quot;); }
Si hay varias botones, podemos saber cual de ellos ha sido pulsado mediante  equals . Object control=evt.getSource();  if(control.equals(btnAceptar) { System.out.println(&quot;Se ha pulsado el botón Aceptar&quot;); }
Mediante  getAccionCommand  obtenemos el nombre (etiqueta) del botón. Podemos saber si se ha pulsado sobre un botón titulado &quot;Rojo&quot;. String nombre=ev.getActionCommand(); if(nombre.equals(&quot;Rojo&quot;) { System.out.println(&quot;Se ha pulsado el botón Rojo&quot;);  }

Más contenido relacionado

PPSX
PPTX
Proyecto Base de Datos I
PDF
Java modografico
DOCX
Diseño de pantallas en as400
PDF
MANUAL DE DFD
PDF
Manual 2 dfd (1)
PDF
Álgebra con Geogebra (Primera Parte)
Proyecto Base de Datos I
Java modografico
Diseño de pantallas en as400
MANUAL DE DFD
Manual 2 dfd (1)
Álgebra con Geogebra (Primera Parte)

La actualidad más candente (20)

PDF
Archivos de pantallas tipo window
PDF
Manual de power_builder
PPT
Curso de Macros Excel
DOCX
Programa voz
DOCX
As400mejorado
DOCX
PDF
Programacion RPG Operaciones
PDF
DOCX
Formularios en Excel
DOCX
PDF
Manual autocad-basico
PPT
Trabajo [Autoguardado] 2oo3
PDF
Álgebra con Geogebra (Segunda Parte)
PPT
Comp graf clase 2
DOCX
Utilisacion del utilitario strssda as400
PDF
Programación de Videojuegos con Python y Pilas (VI)
PDF
Taller1
PDF
48820741 manual-proteus
PDF
2012 interfaz grafica en guide matlab
Archivos de pantallas tipo window
Manual de power_builder
Curso de Macros Excel
Programa voz
As400mejorado
Programacion RPG Operaciones
Formularios en Excel
Manual autocad-basico
Trabajo [Autoguardado] 2oo3
Álgebra con Geogebra (Segunda Parte)
Comp graf clase 2
Utilisacion del utilitario strssda as400
Programación de Videojuegos con Python y Pilas (VI)
Taller1
48820741 manual-proteus
2012 interfaz grafica en guide matlab
Publicidad

Destacado (19)

PPTX
Programación Orientada a objetos
DOCX
Problema en la fuente de poder, diagrama de flujo
PPTX
NetBeans8
PPT
DOCX
Problema en la fuente de poder, diagrama de flujo 2
PDF
Seguridad Informática
PDF
63997661 tecnologia-cliente-servidor-con-java
PDF
Manual de Netbeans
PPTX
Unidad i introduccion a la seguridad informatica
PDF
2023909 manual-de-politicas-y-normas-de-seguridad-informatica
PPTX
Programacion orientada a objetos Java
PPTX
Unidad 1: Introducción a la Seguridad Informática
PDF
U.T. 3.- Programación Orientada a Objetos. Programación JAVA
ODP
Herramientas para auditorias de seguridad informatica
PPT
Seguridad Informática en Redes de Computadores
PPT
Fundamentos de programación Java
PDF
Diagrama de flujo
PPTX
Programacion Orientada a Objetos
PDF
Seguridad en Informatica - Luis Castellanos
Programación Orientada a objetos
Problema en la fuente de poder, diagrama de flujo
NetBeans8
Problema en la fuente de poder, diagrama de flujo 2
Seguridad Informática
63997661 tecnologia-cliente-servidor-con-java
Manual de Netbeans
Unidad i introduccion a la seguridad informatica
2023909 manual-de-politicas-y-normas-de-seguridad-informatica
Programacion orientada a objetos Java
Unidad 1: Introducción a la Seguridad Informática
U.T. 3.- Programación Orientada a Objetos. Programación JAVA
Herramientas para auditorias de seguridad informatica
Seguridad Informática en Redes de Computadores
Fundamentos de programación Java
Diagrama de flujo
Programacion Orientada a Objetos
Seguridad en Informatica - Luis Castellanos
Publicidad

Similar a Temaswing (20)

PPTX
Interfaz gráfica de usuario
PDF
Manuales seminario java-manualdejava-sem 3 - 4
PDF
Applets.pdf
PDF
Semana 5 Java Swing
PPT
Entorno grafico en Java
PPT
AWT- JAVA
PPT
Entorno gráfico en Java
PPT
abstract window tool kit
PDF
Java tema06a
DOC
2 desarrollo interfaz_grafico-capitulo1-02otroseventos
PPTX
Manejo de eventos en java
PDF
Análisis de funciones con Geogebra
PDF
Unidad 01 Tema 01 2022 LPI (1891).pdf
PPTX
Componentes app inventor
DOCX
Tema 2 objetos_jlabel_jtextfield_jbutton
PDF
2 interfaces graficas_de_usuario (1)
DOC
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
DOC
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
PDF
Cuadernillo Programación
PPT
Interfaces Usuario 3
Interfaz gráfica de usuario
Manuales seminario java-manualdejava-sem 3 - 4
Applets.pdf
Semana 5 Java Swing
Entorno grafico en Java
AWT- JAVA
Entorno gráfico en Java
abstract window tool kit
Java tema06a
2 desarrollo interfaz_grafico-capitulo1-02otroseventos
Manejo de eventos en java
Análisis de funciones con Geogebra
Unidad 01 Tema 01 2022 LPI (1891).pdf
Componentes app inventor
Tema 2 objetos_jlabel_jtextfield_jbutton
2 interfaces graficas_de_usuario (1)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
Cuadernillo Programación
Interfaces Usuario 3

Último (20)

PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PPTX
Propuesta BKP servidores con Acronis1.pptx
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PPTX
El uso de las TIC en la vida cotidiana..
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPT
Protocolos de seguridad y mecanismos encriptación
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PDF
MANUAL de recursos humanos para ODOO.pdf
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
capacitación de aire acondicionado Bgh r 410
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PPTX
modulo seguimiento 1 para iniciantes del
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Propuesta BKP servidores con Acronis1.pptx
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
El uso de las TIC en la vida cotidiana..
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Protocolos de seguridad y mecanismos encriptación
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
MANUAL de recursos humanos para ODOO.pdf
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
capacitación de aire acondicionado Bgh r 410
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
Diapositiva proyecto de vida, materia catedra
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
modulo seguimiento 1 para iniciantes del
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx

Temaswing

  • 1. PROGRAMACION EN JAVA ING. ZENAIDA HUANCA LLAMO COMPONENTES SWING
  • 2. Diseño de Interfaces de Usuario 1. Introducción a Swing Compuesto de componentes gráficos ajustables y en los que el comportamiento (look-and-feel) se fija en tiempo de ejecución (admite diferentes apariencias). Cerca de 250 componentes Extiende (no reemplaza) los componentes AWT (JButton, JPanel, JTextField) No se pueden/deben mezclar
  • 3. Swing: Jerarquía de Componentes
  • 4. Swing: Jerarquía de clases en JBuilder
  • 7. 2. Etiquetas e Iconos
  • 22. 6. ELECCION Componentes que permiten elegir una opción entre una serie de alternativas Se permite selección simple/múltiple El modo de selección múltiple depende del Look&Feel (Shift, Crtl...) JList JComboBox
  • 24. 6.2 ListModel / DefaultListModel
  • 26. 6.3 ComboBoxModel / DefaultComboBoxModel
  • 27. 7. Tablas. JTable en un JScrollPane JTable controla cómo se presentan los datos TableModel controla los datos en sí mismos. TableModel dataModel = new AbstractTableModel () { public int getColumnCount() { return 10; } public int getRowCount() { return 10;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); Algunos métodos en JTable : public int getSelectedColumn() public int getSelectedRow() public Object getValueAt(int row, int column)
  • 28. Ejemplo JTable public class DemoTabla extends JFrame{ ... public DemoTabla(){ Object[][] dat os = { {&quot;Maria&quot;, &quot;Campillo&quot;,&quot;Snowboarding&quot;, new Integer(5), new Boolean(false)}, {&quot;Elisa&quot;, &quot;Heredia&quot;,&quot;Remo&quot;, new Integer(3), new Boolean(true)}, ... }; String[] nombresColumnas = {&quot;Nombre&quot;, &quot;Apellido&quot;, &quot;Deporte&quot;, &quot;nº de años&quot;,&quot;Vegetariano&quot;}; JTable tabl a = new JTable(dat os , nombresColumnas ); JScrollPane scrollPane = new JScrollPane(tabl a ); }//fin del constructor
  • 29. 8. JOptionPane Ventanas de mensajes estándar que permiten mostrar un mensaje de información al usuario o capturar información. Casi todos los usos de esta clase son llamadas a uno de los métodos static showXxxDialog JOptionPane.showMessageDialog(); JOptionPane.showConfirmDialog(); JOptionPane.showOptionDialog)(); JOptionPane.showInputDialog(); Todos los diálogos son modales (no continúa la ejecución hasta que no se cierra). Se pueden configurar mediante parámetros: título, mensaje, icono, etc.
  • 30. Ejemplos JOptionPane JOptionPane. showMessageDialog (null, &quot;Cuidado con lo que haces&quot;, &quot;Consejo&quot;, JOptionPane.ERROR_MESSAGE); JOptionPane. showConfirmDialog (null, “Debes elegir uno&quot;, “Decide&quot;, JOptionPane.YES_NO_OPTION);
  • 31. Ejemplo JOptionDialog Object[] opciones = { &quot;Continuar&quot;, &quot;Cancelar&quot;, &quot;Guardar Estado&quot; }; JOptionPane. showOptionDialog (null, &quot;Podemos estar en un estado inconsistente&quot;, &quot;¡¡¡OJO!!!&quot;,JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, opciones, opciones[0]);
  • 32. Ejemplo entrada de datos Object [] valores = {&quot;Libro&quot;,&quot;CD&quot;,&quot;DVD&quot; }; String respuesta=(String) JOptionPane. showInputDialog ( null, &quot;Elija el tipo de producto&quot;, &quot;Entrada de datos&quot;, JOptionPane.QUESTION_MESSAGE, null, valores, valores[0]);
  • 33. Ejemplo entrada de datos libre Icon icono = new ImageIcon(&quot;icons/Question.gif&quot;); String respuesta = (String)JOptionPane. showInputDialog ( null, &quot;Introduzca el nombre que va a borrar&quot;, &quot;Eliminar contacto&quot;, JOptionPane.QUESTION_MESSAGE, icono, null,null);
  • 34. 9. Menús JMenuBar JPopupMenu Añadimos un menú Haciendo doble click abrimos el diseñador de menús Componente JFileChooser
  • 36. Asignación del menú al componente Una vez cerrado el diseñador de menús, asignamos el JMenuBar al componente que lo contendrá ( JFrame o JDialog ). Desde el diseñador El resultado es que en la en la definición de VentanaContador se añada: this. setJMenuBar (jMenuBar1); Propiedades del JFrame o JDialog
  • 37. 10. Modelo de delegación de eventos Los eventos se encapsulan en una jerarquía de clases donde la clase raíz es java.util.EventObject Fuentes de eventos ( Source ): es un objeto que tiene la capacidad de detectar eventos y notificar a los receptores de eventos que se han producido esos eventos mantiene una lista de objetos receptores y los tipos de eventos a los que están suscritos. El programador crea esa lista utilizando llamadas a los métodos add<TipoEvento>Listener() (tb remove ) . Generalmente un componente del interfaz gráfico Receptores de eventos ( Listener ): es una clase (o una subclase de una clase) que implementa un interfaz receptor específico java.util.EventListener declara TODOS los métodos adecuados al tratamiento de los eventos de su clase Resultan de utilidad las clases internas
  • 38. Modelo de delegación de eventos Emparejamiento entre clases de eventos y definiciones de interfaces. Por ejemplo: class MouseEvent interfaz MouseListener En java.awt.Component existe el método addMouseListener Adaptadores ( Adapter ): evita tener que escribir todos los métodos del interfaz implementa todos los métodos del interfaz con métodos vacíos una clase receptor puede definirse como una clase que extiende una clase Adapter (en lugar de una clase que implementa el interfaz) y sobreescribe los métodos que necesite Ejemplo: public abstract class MouseAdapter implements MouseListener
  • 39. Interfaces Listener M étodos
  • 40. 11. Enlazar el menú Archivo con JFileChooser JFileChooser es un cuadro de diálogo para archivos. Acción asociada a la opción de menú abrir: public class VentanaContador extends JFrame{ private JFileChooser explorador = new JFileChooser(); ... void jMenuItemAbrir_actionPerformed(ActionEvent e) { if (JFileChooser.APPROVE_OPTION == explorador. showOpenDialog (this)){ File fichero = explorador. getSelectedFile (); recuperarDatos(fichero); } } También showSaveDialog
  • 42. 12. Clase Graphics La clase Graphics es una clase base abstracta (no se puede instanciar) para todo contexto gráfico que permite a una aplicación dibujar y cargar imágenes. Esta clase permite utilizar métodos de construcción gráfica, generalmente dentro del método Paint(); sin embargo, también podemos tener nuestro propio método gráfico donde hacerlo. La pantalla gráfica depende de la configuración de la pantalla y de la tarjeta de video que tenga el computador.
  • 43. Métodos de la Clase Graphics drawRect (int x, int y, int width, int height) Dibuja el contorno de un rectángulo cuyas coordenadas de la esquina superior izquierda, el ancho y el alto se dan como parámetros abstract void drawOval (int x, int y, int width, int height) Dibuja el contorno de un óvalo inscrito en un rectángulo cuyas coordenadas se dan como parámetros. abstract void drawLine (int x1, int y1, int x2, int y2) Dibuja una línea desde las coordenadas del punto de partida (x1,y1) hasta las coordenadas del punto de llegada (x1,y2) abstract void drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) Dibuja un arco circular o elíptico dentro del rectángulo especificado en los parámetros. Debe darse además el ángulo de inicio y el ángulo del arco requerido. abstract void clearRect (int x, int y, int width, int height) Limpia el area rectangular definido por los parámetros rellenados con el color de fondo encontrado abstract void
  • 44. Métodos de la Clase Graphics FillRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight) Dibuja un rectángulo relleno con las esquinas en curva. abstract void fillRect (int x, int y, int width, int height) Dibuja un rectángulo relleno abstract void fill3DRect (int x, int y, int width, int height, boolean raised) Dibuja un rectángulo tridimensional relleno. abstract void fillOval (int x, int y, int width, int height) Dibuja un óvalo relleno. abstract void fillArc (int x, int y, int width, int height, int startAngle, int arcAngle) Dibuja un arco circular o elíptico relleno abstract void drawString (String str, int x, int y) Dibuja el texto dado a partir de la coordenada x,y también dados como parámetros. abstract void drawRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight) Dibuja el contorno ovalado en las esquinas de un rectángulo dándole además de las coordenadas para un rectángulp, el ancho y el alto de las curvas de las esquinas. abstract void
  • 45. Ejemplo aplicativo Clase Graphics public void paint(Graphics g) { g.drawArc(250,50,80,80,0,180); g.drawArc(50,220,80,80,45,90); g.setColor(Color.blue); g.fillArc (150,150, 80, 60, 0, 135); g.setColor(Color.RED); g.fillRect (80,40, 80,30); g.setColor(Color.green); g.fillRoundRect(10,20,50,20,10,10); g.setColor(Color.MAGENTA); g.fill3DRect(20,95,85,85,true); }
  • 46. 13. Respuesta a las acciones del usuario sobre un grupo de controles (botones) En el estudio de la función respuesta a la acción de pulsar sobre un botón , o de hacer doble-clic sobre un elemento de una lista , el objeto ev de la clase ActionEvent , nos proporciona información acerca del suceso que se ha producido, nos dice qué control ha generado el suceso. Por ejemplo, podemos saber mediante la función miembro getSource si el suceso procede de la acción sobre un botón, de un control lista, o de un control de edición, etc.
  • 47. NetBeans public void actionPerformed(java.awt.event.ActionEvent evt) { … .. } JBuilder public void actionPerformed(ActionEvent e) { … }
  • 48. En el código de la función respuesta actionPerformed , podemos saber si el control sobre el que se ha actuado es una instancia de la clase Button mediante el operador  instanceof Object control=evt.getSource(); if(control instanceof JButton) { System.out.println(&quot;Se ha pulsado un botón&quot;); }
  • 49. Si hay varias botones, podemos saber cual de ellos ha sido pulsado mediante equals . Object control=evt.getSource(); if(control.equals(btnAceptar) { System.out.println(&quot;Se ha pulsado el botón Aceptar&quot;); }
  • 50. Mediante getAccionCommand obtenemos el nombre (etiqueta) del botón. Podemos saber si se ha pulsado sobre un botón titulado &quot;Rojo&quot;. String nombre=ev.getActionCommand(); if(nombre.equals(&quot;Rojo&quot;) { System.out.println(&quot;Se ha pulsado el botón Rojo&quot;); }