Interfaces de Usuario Componentes Swing II - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

Interfaces de Usuario Componentes Swing II

Description:

Diferencia (en Swing y AWT) entre: C digo generado ... ItemEvent.DESELECTED. Interface ItemListener: public void itemStateChanged (ItemEvent evt) ... – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 28
Provided by: arantx
Category:

less

Transcript and Presenter's Notes

Title: Interfaces de Usuario Componentes Swing II


1
Interfaces de UsuarioComponentes Swing (II)
2
Generación de código
  • Diferencia (en Swing y AWT) entre
  • Código generado automáticamente
  • En una IDE (como Netbeans)
  • Se deben conservar los ficheros
  • .java
  • .form
  • Código no generado automáticamente

3
Ejemplo
4
Ejemplo, autom. (I)
  • public class MiVentana extends javax.swing.JFrame
  • private int clicks
  • public MiVentana()
  • this.clicks0
  • initComponents()
  • private void initComponents()
  • jPanel1 new javax.swing.JPanel()
  • jButton1 new javax.swing.JButton()
  • jButton2 new javax.swing.JButton()
  • jPanel2 new javax.swing.JPanel()
  • jLabel1 new javax.swing.JLabel()
  • setTitle("Un ejemplo")
  • addWindowListener
  • (new java.awt.event.WindowAdapter()
  • public void windowClosing
  • (java.awt.event.WindowEvent evt)

5
Ejemplo, autom. (II)
  • jPanel1.setBorder // Definido en
    JComponent
  • (new javax.swing.border.LineBorder
  • (new java.awt.Color(0,
    0, 0)))
  • jButton1.setText("Numero de clicks")
  • jButton1.addActionListener
  • (new java.awt.event.ActionListener()
  • public void actionPerformed
  • (java.awt.event.Action
    Event evt)
  • jButton1ActionPerformed(evt)
  • )
  • jPanel1.add(jButton1)
  • jButton2.setText("No hacer click")
  • jButton2.addActionListener
  • (new java.awt.event.ActionListener()
  • public void actionPerformed

6
Ejemplo, autom. (III)
  • ,,,,,,
  • getContentPane().
  • add(jPanel1, java.awt.BorderLayout.
    SOUTH)
  • jLabel1.setText("Numero de clicks 0")
  • jLabel1.setBorder
  • (new javax.swing.border.LineBorder
  • (new java.awt.Color(0, 0, 0)))
  • jPanel2.add(jLabel1)
  • getContentPane().add(jPanel2,
    java.awt.BorderLayout.CENTER)
  • pack()
  • private void jButton2ActionPerformed
  • (java.awt.event.ActionEvent evt)
  • // Add your handling code here
  • this.clicks(this.clicks2)/(this.clicks2
    )

7
Ejemplo, autom. (IV)
  • private void jButton1ActionPerformed
  • (java.awt.event.ActionEvent evt)
  • // Add your handling code here
  • this.clicks
  • this.jLabel1.setText("Número de clicks "
    this.clicks)
  • private void exitForm(java.awt.event.WindowEve
    nt evt)
  • System.exit(0)
  • public static void main(String args)
  • new MiVentana().show()
  • private javax.swing.JButton jButton2
  • private javax.swing.JLabel jLabel1
  • private javax.swing.JButton jButton1
  • private javax.swing.JPanel jPanel2
  • private javax.swing.JPanel jPanel1

8
Mensajes de error
  • java.lang.ArithmeticException / by zero
  • at MiVentana.jButton2ActionPerformed(MiVenta
    na.java71)
  • at MiVentana.access200(MiVentana.java11)
  • at MiVentana3.actionPerformed(MiVentana.jav
    a52)
  • ... ...
  • ... ...
  • at java.awt.EventDispatchThread.pumpEvents
  • (EventDispatchThread.java130)
  • at java.awt.EventDispatchThread.run
  • (EventDispatchThread.java98)
  • El programa sigue funcionando.
  • Funcionamiento de un programa Swing
  • El hilo de tratamiento de eventos es un bucle que
    recoge los eventos generados y ejecuta los
    métodos de los listeners
  • En pseudocódigo
  • while (hay-eventos-por-procesar)
  • try
  • procesa-el-siguiente-evento
  • catch (Exception exc)

9
Ejemplo, no autom. (I)
  • import java.awt.
  • import java.awt.event.
  • import javax.swing.
  • import javax.swing.border.
  • public class MiVentana extends JFrame
  • implements ActionListener
  • private JButton jButton2
  • private JLabel jLabel1
  • private JButton jButton1
  • private JPanel jPanel2
  • private JPanel jPanel1
  • private int clicks
  • public MiVentana()
  • this.clicks0
  • jPanel1 new JPanel()
  • jButton1 new JButton()
  • jButton2 new JButton()
  • jPanel2 new JPanel()
  • jLabel1 new JLabel()

10
Ejemplo, no autom. (II)
  • jPanel1.setBorder
  • (new LineBorder(new Color(0, 0, 0)))
  • jButton1.setText("Numero de clicks")
  • jButton1.addActionListener(this)
  • jPanel1.add(jButton1)
  • jButton2.setText("No hacer click")
  • jButton2.addActionListener(this)
  • jPanel1.add(jButton2)
  • getContentPane().
  • add(jPanel1, BorderLayout.SOUTH)
  • jLabel1.setText("N\u00famero de clicks
    0")
  • jLabel1.setBorder
  • (new LineBorder(new Color(0, 0, 0)))
  • jPanel2.add(jLabel1)
  • getContentPane().
  • add(jPanel2, BorderLayout.CENTER)
  • pack()

11
Ejemplo, no autom. (III)
  • public void actionPerformed (ActionEvent evt)
  • if (evt.getSource()this.jButton1)
  • this.clicks
  • this.jLabel1.
  • setText("Número de clicks " this.clicks)
  • else if (evt.getSource()this.jButton2)
  • this.clicks(this.clicks2)/(this.clic
    ks2)
  • this.jLabel1.
  • setText("Número de clicks " this.clicks)
  • public static void main(String args)
  • new MiVentana().show()

12
Ejemplo, no autom. (IV)
  • Los oyentes pueden ser
  • La ventana (el JFrame)
  • Clases anónimas (como las generadas por Netbeans)
  • Clases anidadas
  • Ejemplo Clases-anidadas-oyentes
  • Otras clases
  • Deberían tener acceso a los parámetros de la
    ventana (como tienen las clases anónimas y las
    internas)

13
Jerarquía de eventos
javax.swing.event.ListSelectionEvent
Object
java.util.EventObject
java.awt.AWTEvent
ItemEvent
KeyEvent
ActionEvent
MouseEvent
FocusEvent
Paquete por defecto ? java.awt.event. Línea
discontinua ? otras clases intermedias Clase
EventObject ? public Object getSource()
14
Clases JButton y JCheckBox (I)
  • JButton
  • Constructor
  • public JButton(String text)
  • Eventos
  • ActionEvent (haciendo click)
  • JCheckBox
  • Constructor
  • public JCheckBox (String text, boolean
    selected)
  • Eventos
  • ActionEvent y ItemEvent (haciendo click)
  • Evento ActionEvent
  • public ActionEvent(Object source, int id, String
    command)

15
Clases JButton y JCheckBox (II)
  • Interface ActionListener
  • public void actionPerformed (ActionEvent evt)
  • Evento ItemEvent
  • public ItemEvent(ItemSelectable source, int id,
    Object item, int stateChange)
  • Valores de stateChange
  • ItemEvent.SELECTED
  • ItemEvent.DESELECTED
  • Interface ItemListener
  • public void itemStateChanged (ItemEvent evt)
  • Ejemplo
  • JButton-JCheckBox

16
Ejemplo
17
Clases JLabel y JComboBox
  • JLabel
  • Constructor
  • public JLabel(String text, Icon icon,
    int horizontalAlignment)
  • JComboBox
  • Editable o no editable
  • Constructor
  • public JComboBox(ComboBoxModel aModel)
  • DefaultComboBoxModel (descendiente de
    ComboBoxModel)
  • Se permite modificar los elementos del modelo en
    tiempo de ejecución.
  • Eventos
  • ItemEvent (al seleccionar)
  • ActionEvent (al seleccionar o apretar enter)
  • Ejemplo
  • JLabel-JComboBox

18
Ejemplo
19
Clases JTextField y JTextArea
  • JTextField
  • Constructor
  • public JTextField(String text, int columns)
  • Eventos
  • ActionEvent (pulsando enter)
  • Métodos
  • (setget)Text
  • JTextArea
  • Constructor
  • public JTextArea(String text, int rows, int
    columns)
  • Métodos
  • public void append(String str)
  • (setget)Text

20
Clase JScrollPane
  • JScrollPane
  • Métodos
  • public void setHorizontalScrollBarPolicy(int
    policy)
  • JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
  • JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
  • JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
  • public void setViewportView(Component view)
  • Incluir una componente
  • Constructor
  • public JScrollPane(Component view)
  • Equivalente a haber hecho setViewPort y
    política AS_NEEDED horizontal y vertical
  • Ejemplo
  • JTextField-JTextArea-JScrollPane

21
Ejemplo
22
Clases JList y JDialog (I)
  • JList
  • Selección simple o múltiple
  • Constructor
  • public JList(ListModel dataModel)
  • Eventos
  • javax.swing.event.ListSelectionEvent
  • Interface ListModel. Descendientes
  • AbstractListModel (clase abstracta)
  • DefaultListModel
  • Permite modificar los elementos en tiempo de
    ejecución.

23
Clases JList y JDialog (II)
  • JDialog
  • Análogo a un JFrame, aunque
  • Modal (única ventana activable)
  • El thread de eventos, al ejecutar
    setVisible(true) para el diálogo, pasa a
    esperar eventos en el diálogo. Se continúa al
    hacer setVisible(false) en el diálogo.
  • No modal
  • Constructor
  • public JDialog(Dialog owner, boolean modal)
  • Ventanas de diálogo predefinidas
  • javax.swing.JOptionPane
  • Es extends JComponent
  • Dos posibles usos
  • Primer uso
  • public static int showConfirmDialog(Component
    parentComponent, Object message). Valores de
    retorno
  • JOptionPane.YES_OPTION
  • JOptionPane.NO_OPTION
  • JOptionPane.CANCEL_OPTION

24
Clases JList y JDialog (III)
  • Segundo uso
  • public JOptionPane(Object message, int
    messageType, int optionType)
  • messageType
  • JOptionPane.QUESTION_MESSAGE, etc
  • optionType JOptionPane.YES_NO_CANCEL_OPTION, etc
  • Luego utilizar
  • public JDialog createDialog(Component
    parentComponent, String title)
  • Valor de retorno
  • Método getValue() en clase JOptionPane
  • En cualquier ventana de diálogo, por defecto
  • Al hacer click en esquina superior derecha, la
    ventana desaparece.
  • Ejemplo
  • JList-JDialog

25
Ejemplo
26
Menus/Ventanas (I)
  • Una Interfaz de Usuario maneja datos realizando
  • Introducción de datos
  • Procesamiento de datos
  • Visualización de resultados
  • Posibles interfaces de usuario
  • Menús
  • Ventanas
  • Ejemplo
  • Menus-Ventanas

27
Menus/Ventanas (II)
Write a Comment
User Comments (0)
About PowerShow.com