Successfully reported this slideshow.

Temaswing

6,244 views

Published on

Published in: Technology, Education
  • Be the first to comment

Temaswing

  1. 1. PROGRAMACION EN JAVA ING. ZENAIDA HUANCA LLAMO COMPONENTES SWING
  2. 2. Diseño de Interfaces de Usuario <ul><li>1. Introducción a Swing </li></ul><ul><li>Compuesto de componentes gráficos ajustables y en los que el comportamiento </li></ul><ul><li>(look-and-feel) se fija en tiempo de ejecución (admite diferentes apariencias). </li></ul><ul><li>Cerca de 250 componentes </li></ul><ul><li>Extiende (no reemplaza) los componentes AWT (JButton, JPanel, JTextField) </li></ul><ul><li>No se pueden/deben mezclar </li></ul>
  3. 3. Swing: Jerarquía de Componentes
  4. 4. Swing: Jerarquía de clases en JBuilder
  5. 5. NetBeans
  6. 6. Swing: Ventanas JFrame
  7. 7. 2. Etiquetas e Iconos
  8. 8. 2.1 JLabel
  9. 9. 2.2 Iconos (ImageIcon)
  10. 10. 3. Botones
  11. 11. 3.1 JButton
  12. 12. 3.2 JToggleButton
  13. 13. 3.3 JCheckBox/JRadioButton
  14. 14. 3.4 ButtonGroup
  15. 15. 4. RANGOS (VALOR)
  16. 16. 4.1 JScrollBar
  17. 17. 4.2 JProgressBar
  18. 18. 4.3 JSlider
  19. 19. 5. TEXTO
  20. 20. 5.1 JTextField/JPasswordField
  21. 21. 5.2 JTextArea
  22. 22. 6. ELECCION <ul><li>Componentes que permiten elegir una opción entre una serie de alternativas </li></ul><ul><li>Se permite selección simple/múltiple </li></ul><ul><li>El modo de selección múltiple depende del Look&Feel (Shift, Crtl...) </li></ul><ul><li>JList </li></ul><ul><li>JComboBox </li></ul>
  23. 23. 6.1 JList
  24. 24. 6.2 ListModel / DefaultListModel
  25. 25. 6.3 JComboBox
  26. 26. 6.3 ComboBoxModel / DefaultComboBoxModel
  27. 27. 7. Tablas. JTable en un JScrollPane <ul><li>JTable controla cómo se presentan los datos </li></ul><ul><li>TableModel controla los datos en sí mismos. </li></ul>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); <ul><li>Algunos métodos en JTable : </li></ul><ul><ul><li>public int getSelectedColumn() </li></ul></ul><ul><ul><li>public int getSelectedRow() </li></ul></ul><ul><ul><li>public Object getValueAt(int row, int column) </li></ul></ul>
  28. 28. Ejemplo JTable <ul><li>public class DemoTabla extends JFrame{ </li></ul><ul><li>... </li></ul><ul><li>public DemoTabla(){ </li></ul><ul><li>Object[][] dat os = { </li></ul><ul><li>{&quot;Maria&quot;, &quot;Campillo&quot;,&quot;Snowboarding&quot;, new Integer(5), </li></ul><ul><li>new Boolean(false)}, </li></ul><ul><li>{&quot;Elisa&quot;, &quot;Heredia&quot;,&quot;Remo&quot;, new Integer(3), </li></ul><ul><li>new Boolean(true)}, </li></ul><ul><li>... }; </li></ul><ul><li>String[] nombresColumnas = {&quot;Nombre&quot;, &quot;Apellido&quot;, &quot;Deporte&quot;, </li></ul><ul><li> &quot;nº de años&quot;,&quot;Vegetariano&quot;}; </li></ul><ul><li>JTable tabl a = new JTable(dat os , nombresColumnas ); </li></ul><ul><li>JScrollPane scrollPane = new JScrollPane(tabl a ); </li></ul><ul><li>}//fin del constructor </li></ul>
  29. 29. 8. JOptionPane <ul><li>Ventanas de mensajes estándar que permiten mostrar un mensaje de información al usuario o capturar información. </li></ul><ul><li>Casi todos los usos de esta clase son llamadas a uno de los métodos static showXxxDialog </li></ul><ul><ul><li>JOptionPane.showMessageDialog(); </li></ul></ul><ul><ul><li>JOptionPane.showConfirmDialog(); </li></ul></ul><ul><ul><li>JOptionPane.showOptionDialog)(); </li></ul></ul><ul><ul><li>JOptionPane.showInputDialog(); </li></ul></ul><ul><li>Todos los diálogos son modales (no continúa la ejecución hasta que no se cierra). </li></ul><ul><li>Se pueden configurar mediante parámetros: título, mensaje, icono, etc. </li></ul>
  30. 30. Ejemplos JOptionPane <ul><li>JOptionPane. showMessageDialog (null, &quot;Cuidado con lo que haces&quot;, &quot;Consejo&quot;, JOptionPane.ERROR_MESSAGE); </li></ul><ul><li>JOptionPane. showConfirmDialog (null, “Debes elegir uno&quot;, “Decide&quot;, JOptionPane.YES_NO_OPTION); </li></ul>
  31. 31. Ejemplo JOptionDialog <ul><li>Object[] opciones = { &quot;Continuar&quot;, &quot;Cancelar&quot;, &quot;Guardar Estado&quot; }; </li></ul><ul><li>JOptionPane. showOptionDialog (null, </li></ul><ul><li>&quot;Podemos estar en un estado inconsistente&quot;, &quot;¡¡¡OJO!!!&quot;,JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, opciones, opciones[0]); </li></ul>
  32. 32. Ejemplo entrada de datos <ul><li>Object [] valores = {&quot;Libro&quot;,&quot;CD&quot;,&quot;DVD&quot; }; </li></ul><ul><li>String respuesta=(String) JOptionPane. showInputDialog ( </li></ul><ul><li>null, </li></ul><ul><li>&quot;Elija el tipo de producto&quot;, &quot;Entrada de datos&quot;, </li></ul><ul><li>JOptionPane.QUESTION_MESSAGE, null, valores, </li></ul><ul><li>valores[0]); </li></ul>
  33. 33. Ejemplo entrada de datos libre <ul><li>Icon icono = new ImageIcon(&quot;icons/Question.gif&quot;); </li></ul><ul><li>String respuesta = (String)JOptionPane. showInputDialog ( </li></ul><ul><li>null, </li></ul><ul><li>&quot;Introduzca el nombre que va a borrar&quot;, </li></ul><ul><li>&quot;Eliminar contacto&quot;, JOptionPane.QUESTION_MESSAGE, </li></ul><ul><li>icono, null,null); </li></ul>
  34. 34. 9. Menús JMenuBar JPopupMenu <ul><li>Añadimos un menú </li></ul><ul><li>Haciendo doble click abrimos el diseñador de menús </li></ul>Componente JFileChooser
  35. 35. Diseñador de menús
  36. 36. Asignación del menú al componente <ul><li>Una vez cerrado el diseñador de menús, asignamos el JMenuBar al componente que lo contendrá ( JFrame o JDialog ). </li></ul><ul><li>Desde el diseñador </li></ul><ul><li>El resultado es que en la </li></ul><ul><li>en la definición de VentanaContador </li></ul><ul><li>se añada: </li></ul><ul><li>this. setJMenuBar (jMenuBar1); </li></ul>Propiedades del JFrame o JDialog
  37. 37. 10. Modelo de delegación de eventos <ul><li>Los eventos se encapsulan en una jerarquía de clases donde la clase raíz es java.util.EventObject </li></ul><ul><li>Fuentes de eventos ( Source ): </li></ul><ul><ul><li>es un objeto que tiene la capacidad de detectar eventos y notificar a los receptores de eventos que se han producido esos eventos </li></ul></ul><ul><ul><li>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 ) . </li></ul></ul><ul><ul><li>Generalmente un componente del interfaz gráfico </li></ul></ul><ul><li>Receptores de eventos ( Listener ): </li></ul><ul><ul><li>es una clase (o una subclase de una clase) que implementa un interfaz receptor específico java.util.EventListener </li></ul></ul><ul><ul><li>declara TODOS los métodos adecuados al tratamiento de los eventos de su clase </li></ul></ul><ul><li>Resultan de utilidad las clases internas </li></ul>
  38. 38. Modelo de delegación de eventos <ul><li>Emparejamiento entre clases de eventos y definiciones de interfaces. </li></ul><ul><li>Por ejemplo: </li></ul><ul><ul><li>class MouseEvent </li></ul></ul><ul><ul><li>interfaz MouseListener </li></ul></ul><ul><ul><li>En java.awt.Component existe el método addMouseListener </li></ul></ul><ul><li>Adaptadores ( Adapter ): </li></ul><ul><ul><li>evita tener que escribir todos los métodos del interfaz </li></ul></ul><ul><ul><li>implementa todos los métodos del interfaz con métodos vacíos </li></ul></ul><ul><ul><li>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 </li></ul></ul><ul><ul><li>Ejemplo: </li></ul></ul><ul><ul><li>public abstract class MouseAdapter implements MouseListener </li></ul></ul>
  39. 39. Interfaces Listener M étodos
  40. 40. 11. Enlazar el menú Archivo con JFileChooser <ul><li>JFileChooser es un cuadro de diálogo para archivos. </li></ul><ul><li>Acción asociada a la opción de menú abrir: </li></ul><ul><li>public class VentanaContador extends JFrame{ </li></ul><ul><li>private JFileChooser explorador = new JFileChooser(); </li></ul><ul><li> ... </li></ul><ul><li>void jMenuItemAbrir_actionPerformed(ActionEvent e) { </li></ul><ul><li>if (JFileChooser.APPROVE_OPTION == </li></ul><ul><li> explorador. showOpenDialog (this)){ </li></ul><ul><li>File fichero = explorador. getSelectedFile (); </li></ul><ul><li> recuperarDatos(fichero); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>También showSaveDialog </li></ul>
  41. 41. JFileChooser.showOpenDialog
  42. 42. 12. Clase Graphics <ul><li>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. </li></ul><ul><li>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. </li></ul>
  43. 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. 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. 45. Ejemplo aplicativo Clase Graphics <ul><li>public void paint(Graphics g) { </li></ul><ul><li>g.drawArc(250,50,80,80,0,180); </li></ul><ul><li>g.drawArc(50,220,80,80,45,90); </li></ul><ul><li>g.setColor(Color.blue); </li></ul><ul><li>g.fillArc (150,150, 80, 60, 0, 135); </li></ul><ul><li>g.setColor(Color.RED); </li></ul><ul><li>g.fillRect (80,40, 80,30); </li></ul><ul><li>g.setColor(Color.green); </li></ul><ul><li>g.fillRoundRect(10,20,50,20,10,10); </li></ul><ul><li>g.setColor(Color.MAGENTA); </li></ul><ul><li>g.fill3DRect(20,95,85,85,true); </li></ul><ul><li>} </li></ul>
  46. 46. 13. Respuesta a las acciones del usuario sobre un grupo de controles (botones) <ul><li>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. </li></ul>
  47. 47. <ul><li>NetBeans </li></ul><ul><li>public void actionPerformed(java.awt.event.ActionEvent evt) </li></ul><ul><li>{ </li></ul><ul><li>… .. </li></ul><ul><li>} </li></ul><ul><li>JBuilder </li></ul><ul><li>public void actionPerformed(ActionEvent e) </li></ul><ul><li>{ </li></ul><ul><li>… </li></ul><ul><li>} </li></ul>
  48. 48. <ul><li>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 </li></ul><ul><li>Object control=evt.getSource(); </li></ul><ul><li>if(control instanceof JButton) </li></ul><ul><li>{ </li></ul><ul><li>System.out.println(&quot;Se ha pulsado un botón&quot;); </li></ul><ul><li>} </li></ul>
  49. 49. <ul><li>Si hay varias botones, podemos saber cual de ellos ha sido pulsado mediante equals . </li></ul><ul><li>Object control=evt.getSource(); </li></ul><ul><li>if(control.equals(btnAceptar) </li></ul><ul><li>{ </li></ul><ul><li>System.out.println(&quot;Se ha pulsado el botón Aceptar&quot;); </li></ul><ul><li>} </li></ul>
  50. 50. <ul><li>Mediante getAccionCommand obtenemos el nombre (etiqueta) del botón. Podemos saber si se ha pulsado sobre un botón titulado &quot;Rojo&quot;. </li></ul><ul><li>String nombre=ev.getActionCommand(); if(nombre.equals(&quot;Rojo&quot;) </li></ul><ul><li>{ </li></ul><ul><li>System.out.println(&quot;Se ha pulsado el botón Rojo&quot;); </li></ul><ul><li>} </li></ul>

×