Introducción a las Interfaces Gráficas de Usuario en Java

Documentos relacionados
Interfaces de Usuario en Java

Swing. Andrés Marín López Jesús Arias Fisteus Laboratorio de Aplicaciones Telemáticas

Universidad Carlos III de Madrid Departamento de Ingeniería Telemática. Swing

Programación de sistemas

Uso de Java Swing. Noviembre de 2013

IC Programación Orientada a Objetos I. Programación de Interfaces Gráficas de Usuario (GUI) 2

Interfaces gráficas en Java GUIs Graphical User Interface

Componentes Swing. Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit)

PROGRAMACIÓN II INTERFACES GRÁFICAS DE USUARIO. Otoño de 2017 BUAP-FCC DR. MARIO ROSSAINZ LÓPEZ

Java GUI La librería Swing

Capítulo 6: Interfaces es de Usuario.

Programación Java Curso C GUI

Desarrollo de Aplicaciones en Java INF 473

Metodología de la Programación

Applets. Un applet es: desde el punto de vista de código Java, un programa diseñado para ser ejecutado en el contexto de una página web.

1. Cómo hacer un applet? Implementación de un Applet (awt) Ejecución de los Applets Hacer el archivo HTML con los siguientes

d) Mencione dos diferencias y dos semejanzas entre clases abstractas e interfaces.

Programación orientada a objetos. Capítulo 11 Construir interfaces gráficas de usuarios

PLANTEL 2 CIEN METROS ELISA ACUÑA ROSSETTI ACADEMIA DE TECNOLOGIA DE LA INFORMACION Y DE LA COMUNICACION

Problema 1 (2 puntos)

Interfaces gráficas de usuario

Federico Peinado

public void mousepressed(mouseevent evento) Se llama cuando se oprime un botón del ratón, mientras el cursor del ratón está sobre un componente.

Pasos requeridos para establecer el manejo de eventos para un componente de GUI.

Indice. Swing: conceptos. Generalidades. Swing & AWT: diferencias. Interfaz Gráfica de Usuario (GUI)

Tema 6. Interfaces gráficas de usuario (Parte 1)

Desarrollo de Aplicaciones en Java INF 473

Desarrollo de aplicaciones gráficas

Tema 7. Construcción de Applets en Java

Segundo Certamen Tiempo: 100 minutos

INF 473 Desarrollo de Aplicaciones en Java

EVENTOS en Java generador de un evento gestor de eventos

Manejo de eventos AWT

Interfases gráficas. Programación Orientada a Objetos.

Programación de Eventos

2.1 Elementos gráficos en Java.

Componentes Swing look and feel pluggable ( mecanismo de double buffering, transparentes.

GUIs en Java (4) Iván Alonso

Programación de sistemas

Programación de sistemas

Programación de Interfaces Gráficas en Java

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Tópicos Avanzados de Programación (TAP3501)

Java es un lenguaje orientado a objetos, por lo que los objetos (las clases) son los elementos más importantes en el diseño y desarrollo de una

Interfaces Gráficas de Usuario

Sincronización de Threads

Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos. Model-View-Controller

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación de Interfaces Gráficas en Java. Agustín J. González ELO329

Programación Orientada a Objetos. Componentes Gráficos

Programación Conducida por eventos Event-driven programming. Agustín J. González ELO329/ELO330

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I

Hasta ahora hemos desarrollado programas que usan la consola para interactuar con el usuario.

Ejemplo de GUI con Swing

Laboratorio de Redes de Comunicaciones Recursos de Sistema en Java

1 Funcionalidades Java que se presentan en esta práctica

Java Applets como ejemplo de Frameworks. Agustín J. González ELO-329

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Diseño y Programación Orientados a Objetos 29 de Abril de Primer Certamen

Applets. Programación de Applets. Cómo hacer un applet Java. Cómo se ejecuta un applet Java. Programación Orientada a Objetos Facultad de Informática

Transparencias de Java. Tema 7: AWT. Uploaded by Ingteleco

Programación Conducida por eventos Event driven programming. Agustín J. González ELO329/ELO330

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

Construir una Interfaz Gráfica

CAPITULO 11. CONSTRUIR INTERFACES GRAFICAS DE USUARIO

Tipos de programas en Java. Programación basada en eventos. Programación basada en eventos. Creación de una interfaz gráfico de usuario

Interfaces gráficas. Jose Jesus García Rueda

Introducción a Swing. Taller de Programación 2016

INTERFAZ GRÁFICO DE USUARIO EVENTOS

UNIDAD I.- Elementos de Interfaces Gráficas

Intefaces gráficas. Eventos. Jose Jesus García Rueda

Interfaz Gráfica de Usuario (GUI)

Interacción con el Usuario Gestión de Eventos

ELO329: Diseño y Programación Orientados a Objetos 10 de Mayo 2017

Programación basada en/dirigida por eventos Event-Based Programming : Conceptos (o Event-driven Programming)

Programación basada en/dirigida por eventos Event-Based Programming : Conceptos (o Event-driven Programming)

Programación basada en eventos Event- Based Programming : Conceptos. ELO329: Diseño y Programación Orientados a Objetos

Interfaces con el Usuario

7.- ANEXOS. Anexo 1.-Diagramas uml LISTADO DE CLASES EN UML. Clase P1. Clase FrameAWT

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Programación Basada en Eventos

JAVA: Applets. Diseño de aplicaciones web.

Capítulo 7. Introducción a las Interfaces Gráficas de usuario. Continuar

Agenda. Contenedores y componentes

Interfaces gráficas con Swing

Laboratorio de Aplicaciones Telemáticas

Desarrollo de Aplicaciones en Java INF 473

Formato para prácticas de laboratorio

ELO329: Diseño y Programación Orientados a Objetos 6 de Mayo 2015

Interfaces con el Usuario

O.K. Click en el botón

CONSTRUIR INTERFACES GRAFIC I AS D E USUARIO I O (GUI) I 1

AWT y Swing. Entorno gráfico:awt y Swing. Soporte Java para el desarrollo de interface gráfica. AWT y Swing. AWT y Swing.

JAVA 7 Los fundamentos del lenguaje Java

Programación Java Curso C Draw

Transcripción:

Introducción a las Interfaces Gráficas de Usuario en Java Ingeniería del Software II Curso 2010/2011 Sergio Ilarri Artigas silarri@unizar.es Parte del material está extraído de JavaSun y Java Tutorial: Copyright 1994-2007 Sun Microsystems, Inc. All Rights Reserved.

Índice Swing: Swing vs. AWT Ejemplos: HelloWorld, SwingApplication Manejadores de eventos Otros: Layout Managers, Borders, L&F Applets: Introducción Ciclo de vida Restricciones de seguridad

Swing

AWT vs. Swing (I) AWT (Abstract Window Toolkit) Desde Java 1.0 Facilidades básicas para crear GUIs abstrae de la plataforma Facilidades básicas para gráficos Botón Windows Sobre el sistema GUI nativo del SO En Java 1.1 se extendió para permitir componentes gráficos ligeros (lightweight) Botón Macintosh No asociados a componentes GUI nativos

AWT vs. Swing (II) Swing Parte de Java 2 y como extensión en Java 1.1 Extensión de AWT Todos sus componentes son ligeros: Responsables de su propia representación gráfica Más portable (100% Java, sin componentes nativos) Pluggable Look and Feel Mucho más completo y potente

Arquitectura MVC (I) Model-View-Controller División de una aplicación visual en 3 partes: Modelo: representa los datos de la aplicación Vista: es la representación visual de los datos Controlador: recibe entradas del usuario a través de la vista y actualiza el modelo en consecuencia Modelo Vista Controlador

Arquitectura MVC (II) El primer prototipo de Swing seguía ese estilo Pero luego se determinó que la vista y el controlador requerían un fuerte acoplamiento Separable model architecture (quasi-mvc) UI (User Interface) Object = UI delegate = delegate object Vista + controlador Componente Modelo Objeto UI Gestor de UI http://java.sun.com/products/jfc/tsc/articles/architecture/

Paquetes Swing en Java 1.4 javax.accessibilityaccessibility javax.swing.plaf javax.swing.text.html javax.swing javax.swing.plaf.basic javax.swing.text.parser javax.swing.border javax.swing.plaf.metal javax.swing.text.rtf javax.swing.colorchooser javax.swing.plaf.multi javax.swing.tree javax.swing.event javax.swing.table javax.swing.undo javax.swing.filechooser javax.swing.text java.awt, java.awt.event

Ejemplo: HelloWorld Se añade al content pane import javax.swing.*; public class HelloWorldSwing { private static void createandshowgui() { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("HelloWorldSwing"); Top-level container (otros: JDialog, JApplet) frame.setdefaultcloseoperation(jframe.exit_on_close); f ti ON CLOSE) JLabel label = new JLabel("Hello World"); frame.getcontentpane().add(label); frame.pack(); frame.setvisible(true); } public static void main(string[] args) { javax.swing.swingutilities.invokelater(new Runnable() { public void run() {createandshowgui();} }); Evita problemas } (thread-safe) }

Ejemplo: SwingApplication (I) import javax.swing.*; import java.awt.*; import java.awt.event.*; Implementa manejadores de eventos action, luego puede registrarse como listener de un objeto gráfico public class SwingApplication implements ActionListener { private static String labelprefix = "Number of button clicks: "; private int numclicks = 0; final JLabel label = new JLabel(labelPrefix + "0 "); }...

Ejemplo: SwingApplication (II) public Component createcomponents() { JButton button = new JButton("I'm a Swing button!"); button.setmnemonic(keyevent.vk_i); button.addactionlistener(this); Este objeto va a escuchar eventos action del botón label.setlabelfor(button); Píxels: top, left, JPanel pane = new JPanel(new GridLayout(0, 1)); right, bottom pane.add(button); add(button); pane.add(label); pane.setborder(borderfactory.createemptyborder(30, 30, 10, 30); return pane; } JPanel : contenedor para agrupar componentes GridLayout : layout manager EmptyBorder : crear hueco /separación

Ejemplo: SwingApplication (III) public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); } Implementa el interface Ati ActionListener Lit Cuando se haga click en el botón Hay un único event-dispatching thread (para el tratamiento de eventos y repintado). Por tanto, hay que ser rápidos!

Ejemplo: SwingApplication (IV) } private static void createandshowgui() { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("SwingApplication"); frame.setdefaultcloseoperation(jframe.exit_on_close); SwingApplication app = new SwingApplication(); Component contents = app.createcomponents(); frame.getcontentpane().add(contents, BorderLayout.CENTER); frame.pack(); frame.setvisible(true); ibl public static ti void main(string[] i args) { javax.swing.swingutilities.invokelater(new Runnable() { public void run() {createandshowgui();} }); }

Algunos Manejadores de Eventos Acción que desencadena el evento El usuario hace click en un botón, presiona Enter al escribir texto en un campo, o selecciona una opción de menú El usuario cierra una ventana El usuario presiona un botón del ratón cuando el cursor está sobre un componente El usuario mueve el ratón sobre un componente Un componente se hace visible Un componente obtiene el foco del teclado Cambia la opción seleccionada en una lista Cambia cualquier propiedad de un componente (ej.: el texto de una etiqueta) Manejador ActionListener WindowListener MouseListener MouseMotionListener ComponentListener FocusListener ListSelectionListener PropertyChangeListener Hay muchos ejemplos de distintos tipos de manejadores de eventos en: http://java.sun.com/docs/books/tutorial/uiswing/events/intro.html

Layout Managers (I) java.awt javax.swing 5 áreas: top, bottom, right, left, center El área center acapara todo el espacio sobrante Por defecto en los content pane (diálogos, frames y applets) -Sitúa en una rejilla 1 única fila o columna -Las filas y columnas pueden tener diferentes alturas y anchuras -Un componente puede ocupar varias celdas

Layout Managers (II) 1 única fila Si se llena, empieza otra Por defecto en un JPanel Contiene componentes distintos dependiendo de la selección

Layout Managers (III) Componentes de igual tamaño Rejilla de filas y columnas Permite especificar relaciones (distancias) entre componentes

Layout Managers (VI) No es recomendable utilizar No es recomendable utilizar posicionamiento absoluto

Componentes (I) Guía visual e interactiva de los componentes de Swing: http://download.oracle.com/javase/tutorial/ui/features/components.html Los componentes Jxxx, menos los contenedores de nivel superior, heredan de: javax.swing.jcomponent 1) Contenedores de nivel superior

Componentes (II) 2) Contenedores de propósito general

Componentes (III) 3) Contenedores de propósito especial

Componentes (IV) 4) Controles básicos

Componentes (V) 5) Elementos de información no editables

Componentes (VI) 6) Elementos de información interactivos

Componentes (VII): Texto

Componentes (VIII): Nombres (I) Botones (javax.swing.jbutton) Casillas de verificación (javax.swing.jcheckbox) Campos de texto de una línea (javax.swing.jtextfield) Campos de texto y edición de varias líneas (javax.swing.jtextarea) Etiquetas (javax.swing.jlabel) Listas (javax.swing.jlist) Menús contextuales (javax.swing.popup)

Componentes (IX): Nombres (II) Barras de desplazamiento (javax.swing.jscrollbar) Sliders (javax.swing.jslider) Áreas de dibujo (java.awt.canvas) Menus (javax.swing.jmenu,javax.swing.jmenubar javax.swing.jmenuitem, javax.swing.jcheckboxmenuitem) Contenedores (javax.swing.jpanel, javax.swing.jwindow and its subclasses)

Algunos Tipos de Borders (I) Elementos clave: clase BorderFactory y método setborder de JComponent Paquete: javax.swing.border

Algunos Tipos de Borders (II)

Algunos Look and Feels

Ejemplo: Dibujar Círculo (I) package is2.silarri; import java.awt.*; awt import java.awt.event.*; import javax.swing.*; public class CircleDrawer extends JFrame {... /* Desarrollado en las dos transparencias siguientes */ } class PanelWithCircle extends JPanel { public void paintcomponent(graphics g) { super.paintcomponent(g); g.drawoval( 300, 300, 60, 60 ); } }

Ejemplo: Dibujar Círculo (II) public CircleDrawer() { super("circle example for IS2 - Sergio Ilarri, " + "October 8, 2006"); PanelWithCircle pwc = new PanelWithCircle(); Container container = getcontentpane(); container.add(pwc); } setsize(600, 600); setvisible(true);

Ejemplo: Dibujar Círculo (III) public static void main(string[] args) { CircleDrawer cd = new CircleDrawer(); cd.addwindowlistener (new WindowAdapter() { public void windowclosing ( WindowEvent e ) } }); { } System.exit(0);

Applets

Introducción Programa Java que un navegador puede descargar y poner en ejecución Embebido en una página web Se ejecuta en un entorno seguro del navegador (sandbox) Clases: java.applet.applet : interface estándar javax.swing.japplet : si se usa Swing

Sólo 1 vez Ciclo de Vida de un Applet ~ constructor init: inicialización del applet sobrecargar start: invocado automáticamente después de init y al recargar la página stop: Invocado automáticamente al pasar a otra página Puede usarse para detener animación destroy: cuando se cierra el navegador

Carga de Applets <applet code=appletworld.class width="200" height="200"> </applet> import javax.swing.japplet; import java.awt.graphics; public class HelloWorld extends JApplet { public void paint(graphics g) { g.drawrect(0, 0, getsize().width - 1, getsize().height - 1); g.drawstring("hello world!", 5, 15); } } Ejecutado por un Java plug-in

Manejo de Componentes add Añade un componente remove Elimina un componente setlayout Establece un gestor de layout

Restricciones de Seguridad (I) Un applet descargado no puede: Cargar librerías o definir métodos nativos Leer o escribir ficheros Establecer conexiones de red (excepto a su máquina origen) Ejecutar programas Leer ciertas propiedades del sistema Sus ventanas son diferentes a las de las aplicaciones

Restricciones de Seguridad (II) Cada navegador tiene su objeto SecurityManager para detectar violaciones Si se produce una violación, se lanza una SecurityException ti

Restricciones de Seguridad (III) Pero los applets sí pueden: Establecer conexiones de red con su máquina origen Mostrar documentos HTML Invocar métodos públicos de otros applets de la misma página Si se cargan desde d el sistema de ficheros local, no tienen restricciones

Diferencias con Programas No hay método main No hay constructor, la inicialización se hace en init y start contenedor de alto nivel Extiende a Applet o JApplet Los componentes GUI se añaden directamente al applet (no a un content pane) excepto al extender JApplet

Comentarios Finales Gran parte del éxito de Java se debe a los applets Herramienta ligera para su visualización: appletviewer En la actualidad, Java Web Start (JNLP) juega un papel p similar para aplicaciones

Algunos Ejemplos http://www.dgp.toronto.edu/~mjmcguff/learn/java/ http://java.sun.com/applets/ http://download.oracle.com/javase/1.5.0/docs/relnotes/demos.html

Referencias The Swing Tutorial. http://java.sun.com/docs/books/tutorial/ui/index.html Swing Second Edition, Matthew Robinson y Pavel Vorobiev, 2003, 912 páginas, Manning Publications Co., ISBN 193011088X. Versión previa gratuita en Word en: http://www.manning.com/robinson2/ Applets. http://java.sun.com/applets/

Fin