Interfaces de Usuario Componentes Swing III - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

Interfaces de Usuario Componentes Swing III

Description:

Asignaci n de men s (en objetos de tipo JFrame, JDialog y JApplet); no se hace ... source, int id, long when, int modifiers, int x, int y, int clickCount, boolean ... – PowerPoint PPT presentation

Number of Views:94
Avg rating:3.0/5.0
Slides: 33
Provided by: arantx
Category:

less

Transcript and Presenter's Notes

Title: Interfaces de Usuario Componentes Swing III


1
Interfaces de UsuarioComponentes Swing (III)
2
Menús (I)
  • Ejemplo
  • Menús
  • Jerarquía

3
Menús (II)
  • Menús normales y desplegables
  • JMenuBar (menú normal)
  • Constructor
  • public JMenuBar()
  • Métodos
  • public JMenu add(JMenu c)
  • Asignación de menús (en objetos de tipo JFrame,
    JDialog y JApplet) no se hace en el
    contentPane
  • public void setJMenuBar(JMenuBar menubar)
  • JPopupMenu (menú desplegable)
  • Constructor
  • public JPopupMenu(String label)
  • Métodos
  • public JMenuItem add (JMenuItem menuItem)
  • public void addSeparator()
  • Mostrar el menú
  • public void show(Component invoker, int x, int y)

4
Menús (III)
  • JMenu
  • Constructor
  • public JMenu(String s)
  • Métodos
  • public JMenuItem add(JMenuItem menuItem)
  • public void addSeparator()
  • JMenuItem
  • Constructor
  • public JMenuItem(String text)
  • Eventos ActionEvent
  • JCheckBoxMenuItem
  • Constructor
  • public JCheckBoxMenuItem(String text, boolean
    selected)
  • Eventos ActionEvent, ItemEvent

5
Menús (IV)
  • JRadioButtonMenuItem
  • No permite selección múltiple
  • Constructor
  • public JRadioButtonMenuItem(String text, boolean
    selected)
  • Eventos ActionEvent, ItemEvent
  • Para permitir uno solo activable, se crea un
    grupo
  • ButtonGroup
  • public void add(AbstractButton b)

6
Ejemplo
7
Operación de pintar
  • Cómo se pinta?
  • Clase java.awt.Graphics
  • Contexto gráfico o pincel virtual
  • Métodos
  • public abstract void drawString(String str, int
    x, int y)
  • public abstract void fillOval(int x, int y, int
    width, int height)
  • public void drawRect(int x, int y, int width, int
    height)
  • public abstract void setFont(Font font)
  • public abstract void setColor(Color c)
  • Una vez creada una componente, se puede acceder a
    su contexto gráfico
  • Clase JComponent
  • public Graphics getGraphics()

8
Eventos de pintar (I)
  • Cuándo se pinta?
  • Una vez creada una componente, haciendo
  • Graphics g ltcomponentegt.getGraphics()
  • g.ltmétodo-de-pintargt
  • Inconveniente habría que ejecutarlo en muchas
    ocasiones
  • En respuesta a la generación de un evento de
    pintar que llega a la cola de eventos.
  • Respuesta al evento de pintar
  • Se ejecuta el método paint de la componente
  • JComponent
  • public void paint (Graphics g)
  • Es público
  • Llama a paintComponent, a paintBorder y a
    paintChildren
  • protected void paintComponent(Graphics g)
  • Pinta el background

9
Eventos de pintar (II)
  • Modos de generación de un evento de pintar
  • Automático
  • Mostrar la ventana por primera vez desiconizar
    una ventana activar la ventana que se encontraba
    total o parcialmente oculta, etc.
  • Llamada al método (java.awt.Component)
  • public void repaint()
  • Componentes no predefinidas
  • Subclase de JPanel, redefiniendo paintComponent
  • Llamando primero a super.paintComponent
  • Ejemplo
  • Pintar-Imagen-Animación

10
Imágenes y animaciones
  • Creación de imágenes
  • Clase Graphics
  • public abstract boolean drawImage(Image img, int
    x, int y, int width, int height, ImageObserver
    observer)
  • JComponent desciende de ImageObserver (interface)
  • Clase java.awt.Toolkit
  • public static Toolkit getDefaultToolkit()
  • public abstract Image getImage(String filename)
  • public abstract Image getImage(URL url)
  • Animaciones
  • Creación de un thread que duerme y repinta
  • Uso de timers (threads predefinidos), mediante
    la clase Timer
  • Ejemplo
  • Animación-Timers

11
Ejemplo
12
Movimientos de ratón (I)
  • Clase java.awt.event.MouseEvent
  • Constructor
  • public MouseEvent(Component source, int id, long
    when, int modifiers, int x, int y, int
    clickCount, boolean popupTrigger, int button)
  • Métodos
  • public int getButton() (botón del ratón)
  • public int getClickCount()
  • public int getX()
  • public int getY()
  • public Object getSource()
  • Movimientos de ratón
  • java.awt.event.MouseMotionListener
  • public void mouseDragged(MouseEvent e)
  • public void mouseMoved(MouseEvent e)

13
Movimientos de ratón (II)
  • Dos tipos de interacciones
  • 1) Mover ratón sin tocar sus botones
  • 2) Arrastrar ratón
  • 1) Mover ratón sin tocar sus botones
  • Eventos generados
  • Un MouseEvent por cada desplazamiento
    infinitesimal
  • El getSource, getX y getY son relativos a
    la componente bajo el ratón
  • Recogido por un MouseMotionListener y procesado
    por mouseMoved

14
Movimientos de ratón (III)
  • 2) Arrastrar ratón
  • Eventos generados
  • Un MouseEvent inicial
  • Recogido por un MouseListener y procesado por
    mousePressed
  • Un MouseEvent por cada desplazamiento
    infinitesimal
  • El getSource, getX y getY son relativos a
    la componente desde donde se arrastra
  • Recogido por un MouseMotionListener y procesado
    por mouseDragged
  • Un MouseEvent final
  • Recogido por un MouseListener y procesado por
    mouseRealeased
  • Ejemplo
  • Movimientos-Ratón

15
Ejemplo
16
Applets
  • Interfaces de usuario que se muestran en
    navegadores Web.
  • Análogos a JFrame, aunque
  • Su tamaño es fijo en la página web
  • No tienen los permisos que una interfaz de
    usuario normal creada dentro del método main
  • Por seguridad
  • No tienen método main. Se define una subclase
    de JApplet y el navegador ejecuta
  • 1) El constructor JApplet()
  • 2) Métodos init, start, stop, destroy
    cuando corresponda

17
Dentro de una página Web
  • Un applet se incluye en una página Web entre
    código HTML

Fichero ejemplo.html
ltHTMLgt ltHEADgt ltTITLEgt
Una página con un applet lt/TITLEgt
lt/HEADgt ltBODYgt A continuación aparece
el applet ltAPPLET
CODEMiApplet2.class WIDTH350
HEIGHT200gt lt/APPLETgt lt/BODYgt lt/HTMLgt
18
Ejemplo
Ejemplo Applets
19
Jerarquía de clases
  • Jerarquía
  • java.lang.Object
  • java.awt.Component
  • java.awt.Container
  • java.awt.Panel
  • java.applet.Applet
  • javax.swing.JApplet

20
Características generales
  • No necesita método main se extiende la clase
    JApplet
  • Los simuladores de applets (appletviewers)
    emulan a applets.
  • Desde línea de comandos
  • appletviewer ejemplo.html
  • ignora el código html fuera de ltappletgt..lt/appletgt
  • Dimensiones modificables interactivamente
  • Los navegadores Internet Explorer y Netscape
    soportan JDK 1.1.
  • Al instalar una versión superior (por ejemplo
    J2SK 1.4), se instala un plug-in para que el
    navegador admita applets de esa versión superior.
  • Applets más convenientes en intranets (mayor
    velocidad de download).

21
Métodos característicos de un applet
  • Dentro de la clase JApplet
  • init()
  • Inicialización de una página en el navegador (se
    ejecuta una sola vez)
  • start()
  • Inicializacion o revisita de una página
  • stop()
  • Al destruir la página o abandonarla
  • destroy()
  • Al destruir la página
  • Algunos navegadores (como Internet Explorer) no
    cumplen este estándar
  • Destruyen el applet al abandonar una página
    (haciendo también destroy) y reinicializan
    completamente el applet al revisitarla.
  • Hilos generados (no estándar)
  • Algunos navegadores generan un hilo de eventos
    por cada applet de una página y otros lo hacen de
    otra manera

22
Limitaciones de applets
  • Dependientes del navegador. Algunas de ellas
  • No pueden leer o escribir en ficheros.
  • Conexiones imposibles a otra máquina distinta de
    la que proviene.
  • No puede arrancar ningún programa en el ordenador
    donde se está ejecutando, ni tampoco leer sus
    propiedades.
  • En el appletviewer aparecen menos restricciones
    (se pueden leer propiedades locales, ejecutar
    otro programa, ...)
  • En Java, sin embargo, hay otros servicios que
    permiten ignorar estas limitaciones
  • A los signed applets de confianza se les puede
    dar los mismos privilegios que a una aplicación.

23
Sintaxis (I) para ltappletgt....lt/appletgt
  • ltAPPLET
  • CODEBASE codebaseURL
  • CODE appletFile
  • ARCHIVE JARFiles
  • NAME appletInstanceName
  • WIDTH pixels HEIGHT pixels
  • gt
  • ltPARAM NAME AttributeName1
  • VALUE AttributeValue1gt
  • ltPARAM NAME AttributeName2
  • VALUE AttributeValue2gt
  • ...
  • lt/APPLETgt

24
Sintaxis (II) para ltappletgt....lt/appletgt
  • El contenido del classpath son direcciones
    internet
  • codebase
  • Análogo a los directorios locales que se añaden
    al classpath en Netbeans
  • archive
  • Análogo a los ficheros .zip o .jar que se
    añaden al classpath en Netbeans
  • Un applet puede recibir parámetros dentro de
    ltparamgt lt/paramgt
  • Análogo a los parámetros del método main de una
    aplicación Java normal.
  • Método
  • public String getParameter(String name)

25
Páginas HTML dinámicas (I)
  • Interfaz web
  • Páginas HTML
  • JSP (Java Server Pages)
  • Comentario
  • lt-- --gt
  • Directiva (de página)
  • lt_at_page gt
  • Scriptlets (mezclables con HTML)
  • lt gt
  • lt gt (conversión a String)
  • Uso de un bean de sesión
  • Bean (atributos con métodos get/set)
  • Javascript
  • Alternativa a JSP
  • JSP envía al servidor y espera respuesta
  • Javascript ejecuta en cliente

26
Páginas HTML dinámicas (II)
  • Ejemplo
  • Interfaz-Web
  • Sesión ? Bean
  • Uso del patrón MVC (Model View Controller)
  • Programación Web Visual (Rapid Web Development)
  • Sun Java Studio Creator

27
Patrones de diseño
  • Patrones de diseño (UML). Ejemplos
  • MVC
  • Patrón de Fábrica Abstracta
  • Ejemplo
  • Patrón de Fábrica Abstracta
  • Ejemplo
  • Realización de preguntas basadas en menús
  • Ejemplo 1 (estilo números)
  • Ejemplo 2 (estilo subcadenas)
  • Implementación en Java
  • Ejemplo
  • Patrón-Diseño

28
Ejemplo 1
  • Estilo de menús basados en números (respuesta con
    un número)
  • Pregunta Capital de Francia
  • 1. Londres
  • 2. Roma
  • 3. Paris
  • 4. Caracas
  • Introduce el numero correcto
  • 1
  • Respuesta incorrecta
  • Pregunta Capital de Francia
  • 1. Londres
  • 2. Roma
  • 3. Paris
  • 4. Caracas
  • Introduce el numero correcto
  • 3
  • Respuesta correcta

29
Ejemplo 2
  • Estilo de menús basados en subcadenas (respuesta
  • con dos primeras letras)
  • Pregunta Capital de Francia
  • - Londres
  • - Roma
  • - Paris
  • - Caracas
  • Introduce las dos primeras letras de la solucion
  • Pa
  • Respuesta correcta
  • Pregunta Capital de Francia
  • - Londres
  • - Roma
  • - Paris
  • - Caracas
  • Introduce las dos primeras letras de la solucion
  • Ca
  • Respuesta incorrecta

30
Método main
  • int main(int argc, char argv)
  • ltCreación de una fábrica de menús de númerosgt
    // Ejemplo 1
  • // Ejemplo 2 Utilización del patrón
  • // ltCreación de una fábrica de menús de
    subcadenasgt
  • ltCreación por la fábrica de un menú gt
  • ltCrear la pregunta "Capital de Francia" para el
    menúgt
  • ltCrear la opción "Londres" para el menúgt
  • ltCrear la opción "Roma" para el menúgt
  • ltCrear la opción "París" para el menú, como la
    correctagt
  • ltCrear la opción "Caracas" para el menúgt
  • ltrepetir dos vecesgt
  • ltEjecutar la acción preguntar en el menúgt
  • ltEjecutar la acción responder en el menúgt
  • ltfin de repeticióngt

31
Diagrama de clases
32
Diagrama de secuencia
Write a Comment
User Comments (0)
About PowerShow.com