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



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

Interfaces gráficas de usuario

Interfaces de Usuario en Java

Programación Avanzada Ingeniería Civil en Computación

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

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

Uso de Java Swing. Noviembre de 2013

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)

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

Interfaces gráficas. Jose Jesus García Rueda

Manejo de eventos AWT

Programación de sistemas

DESARROLLO DE APLICACIONES ACCESIBLES

Paradigmas de Programación

PROGRAMACIÓN WEB I SEMANA 7 ESTE DOCUMENTO CONTIENE LA SEMANA 7

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

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

Introducción a Protégé

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Aplicaciones gráficas en Java Librería Swing

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de Certamen Final

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Definiciones. Tema 21_Módulos Menú 1

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

Implementar dicha interfaz Definir TODOS los métodos incluidos en dicha interfaz

Diseño de formularios

CURSO: Programación de Aplicaciones en Lenguaje JAVA

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

F O R M U L A R I O S FORMULARIOS

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

2.2.- Paradigmas de la POO

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

Java GUI La librería Swing

Java: Clases Abstractas e Interfaces

Introducción XO Introducción Generalidades de la Interfaz Gestión de datos en la XO: Journal

POLIMORFISMO "una interfaz, múltiples métodos".

Cuando hacemos uso de los grupos, se tendrán los permisos asignados al grupo, en todas las carpetas y documentos del sitio.

El lenguaje de programación Java

Trabajando con GUI en Java Componente java.swing

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Introducción a la Programación Orientada a Objetos

Tema 7. Construcción de Applets en Java

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Programación Orientada a Objetos con Java

INTERFAZ GRÁFICO DE USUARIO

GENERACIÓN DE TRANSFERENCIAS

Comunicación utilizando la biblioteca en JAVA para SADE

WINDOWS. Iniciando Windows. El mouse

1. Configuración del entorno de usuario

Programación Orientada a Objetos en Java

Práctica 4: Java Remote Method Invocation (RMI)

Uso de Visual C++ Pre-Practica No. 3

JAVA: Applets. Diseño de aplicaciones web.

Para este ejemplo vamos a crear el marco de aplicación que se presenta en la captura de pantalla siguiente:

Práctica 3: Introducción a Word

GENERACIÓN DE ANTICIPOS DE CRÉDITO

QUERCUS PRESUPUESTOS MANUAL DEL USO

Manual de INTRANET. Introducción Objetivo de este Manual Convenciones y estándares a utilizar Convenciones de formato de texto...

Interfaces gráficas I

01 Índice. GESTOR DE CONTENIDOS Manual de uso 01 ÍNDICE OBJETO DEL DOCUMENTO ESTRUCTURA GRÁFICA DEL SISTEMA... 3

Microsoft Access proporciona dos métodos para crear una Base de datos.

2.1. Introducción al lenguaje Java

Nº de expediente: TSI Subprograma: Avanza Competitividad I+D+I

Tutorial PowerPoint. Crear una nueva presentación

Kaldeera Advanced Forms 2009 Guía del usuario

Manual del panel. Core-Admin

Proceso de Instalación Una vez agregada como aplicación a su sitio y que esté disponible:

Manual del visor GeoEuskadi 2013 MANUAL DEL VISOR GEOEUSKADI

Imprimir códigos de barras

Accesibilidad web GUÍA FUNCIONAL

El Power Point es un programa que permite hacer presentaciones y es usado ampliamente en los ámbitos de negocios y educacionales.

Introducción Delicious Algunas características: Sitio para acceder a esta herramienta Qué es Delicious?...

Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Manual de creación de Interfaces de Usuario en Netbeans

INTERFAZ GRÁFICO DE USUARIO APLICACIONES DE EJEMPLO

MICROSOFT FRONTPAGE Contenido

Capítulo 3 Usando GUIDE. 3.1 Acerca de GUIDE

Benemérita Universidad Autónoma del Estado de Puebla

Applets y Aplicaciones

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

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

Tema 7: Fundamentos de la programación sobre MS-Windows.

Profesora: I.S.C. Francisco Ángeles Ángeles. Periodo: Periodo: Julio-Diciembre 2013

Curso de Java POO: Programación orientada a objetos

Formación del Usuario Manual de Windows XP

Laboratorio 8. Hojas de estilo, plantillas y bibliotecas en Dreamweaver

Introducción al LabVIEW

Hasta ahora Microsoft disponía de dos sistemas operativos diferentes: entorno personal Windows98. entorno profesional Windows NT/2000.

TEMA 2. CARACTERÍSTICAS DEL LENGUAJE VISUAL BASIC

MODELO DE IMPLEMENTACIÓN

Desarrollo de Servicios Web con JBuilder

Paradigmas de Programación Práctica II - Curso 2012/13

Finalmente, aprenderá a interceptar y a manejar muchos de los eventos comunes que tienen los componentes y los formularios de Windows Form.

Manual de Usuario del

Practica creación de tesauros

Agentes con Interfaz Gráfica.

Prácticas con Elastix Asterisk - Lab. 3

Transcripción:

Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Swing Andrés Marín López Jesús Arias Fisteus Laboratorio de Aplicaciones Telemáticas

2 Índice Introducción a Swing Componentes Layouts Modelo de eventos Accesibilidad

3 Aplicaciones gráficas En Java, hay varias alternativas: AWT (Abstract Window Toolkit) JFC Swing SWT (Standard Widget Toolkit) El paradigma de programación de aplicaciones gráficas en Java es similar al de otros lenguajes y bibliotecas

JFC Java Foundation Classes incluye paquete swing para crear interfaces gráficas Permite al programador elegir la apariencia (Pluggable Look and Feel) entre Java, windows, GTK+, etc. Incluye otros APIs adicionales: accesibilidad, 2D, arrastrar y soltar entre aplicaciones internacionalización 4

5 Paquetes JFC javax.accessibility 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

6 Swing Se basa en AWT, pero es: Más potente, completo y elegante. Más eficiente. Referencias básicas: Creating a GUI with JFC/Swing (The Swing Tutorial) http://java.sun.com/docs/books/tutorial/uiswing/ The Swing Connection http://java.sun.com/javase/technologies/desktop/articles.jsp

Componentes Cada elemento gráfico de GUI es un componente Cada componente es una instancia de una clase Un componente se crea como cualquier otro objeto Java Algunos componentes pueden contener a otros componentes (son contenedores) http://java.sun.com/docs/books/tutorial/uiswing/components/index.html 7

8 Contenedores de alto nivel Applets Diálogos Marcos (ventanas)

9 Contenedores de alto nivel Cada contenedor de alto nivel tiene un JRootPane que es la raíz de la jerarquía de contenedores. Todo componente GUI debe formar parte de la jerarquía de contenedores. Cada componente GUI sólo puede aparecer una vez. Un contenedor de alto nivel puede opcionalmente tener una barra de menús.

10 Contenedores intermedios Panel Panel dividido Panel deslizante Panel con solapas Barra de herramientas

11 Contenedores específicos Panel interno Panel de capas

Controles básicos Botones Cajas combo Listas Menús Controles deslizantes Controles numéricos Campos de texto (con/sin formato) 12

13 Displays no editables Etiquetas Barras de progreso Pistas de herramientas (tool tips)

14 Displays interactivos Selector de colores Tabla Texto Selector de ficheros Árboles

15 Más sobre componentes Cada componente implementa un método paint() que contiene el código para pintarlo Cuando el entorno necesita volver a pintar un componente, invoca a su método repaint() http://java.sun.com/docs/books/tutorial/uiswing/components/index.html

Pasos básicos Importar paquetes javax.swing.xxx Disponer un contenedor: JFrame JDialog JApplet Agregar componentes al contenedor Mostrar el contenedor Los GUIs deben ser creados en el hilo de atención a eventos 16

Hola Mundo import javax.swing.*; public class HelloWorldSwing { public void createandshowgui() { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("HelloWorldSwing"); frame.setdefaultcloseoperation(jframe.exit_on_close); JLabel label = new JLabel("Hello World"); frame.getcontentpane().add(label); frame.pack(); frame.setvisible(true); } public static void main(string[] args) { HelloWorldSwing hello = new HelloWorldSwing(); javax.swing.swingutilities.invokelater(new Runnable() { public void run() { hello.createandshowgui(); } }); } 17

Look And Feel Java GTK+ MacOS Microsoft Windows 18

19 Look And Feel: Ejemplo String lookandfeel = null; // Pide el LAF de Java lookandfeel = UIManager.getCrossPlatformLookAndFeelClassName();... try { UIManager.setLookAndFeel(lookAndFeel); } catch (Exception e) { }...// Crear y mostrar el GUI...

20 Contenedores y layouts A cada contenedor se le establece un layout asociado Un layout establece la disposición de los componentes dentro del contenedor Los componentes se añaden a un contenedor con el método add http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html

21 Contenedores: Ejemplo JPanel panel = new JPanel(new GridLayout(0,1)); panel.add(button); panel.getrootpane().adddefaultbotton(button); panel.add(label); panel.setborder(borderfactory.createemptyborder( 30, //arriba 30, //izquierda 10, //abajo 30) //derecha );

22 Modelo de eventos Cada componente puede generar eventos: Acctiones del usuario sobre el componente Temporizaciones Cambio de estado, etc. En cada componente se pueden registrar escuchadores de eventos Cuando el componente genere un evento, invoca a todos sus manejadores de eventos

23 Eventos Cada evento es un objeto que hereda de la clase AWTEvent Ejemplos de eventos: ActionEvent MouseEvent KeyEvent WindowEvent FocusEvent Otros...

24 Escuchadores de eventos Cada escuchador es un objeto que implementa la interfaz correspondiente al tipo de evento a escuchar: ActionListener WindowListener MouseListener KeyListener FocusListener Otros...

25 Etiquetas y botones: ejemplo JButton button = new JButton("I'm a Swing button!"); button.setmnemonic('i'); /*cuando se pulse Alt-i */ button.addactionlistener(/*...this o creamos una clase anónima o...*/); private static String labelprefix = "Number of button clicks: "; private int numclicks = 0; final JLabel label = new JLabel(labelPrefix + "0 "); label.setlabelfor(button); label.settext(labelprefix + numclicks);

26 Manejar eventos public class SwingApplication implements ActionListener { JButton button = new JButton("I'm a Swing button!"); button.addactionlistener(this); public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); } }

Clases adaptadoras Algunas interfaces de escuchadores poseen varios métodos (ej. MouseListener) Implementar la interfaz obliga a implementar todos sus métodos: demasiado código si sólo interesa implementar uno de ellos Alternativa: la API proporciona implementaciones por defecto (adaptadores; ej. MouseAdapter) Basta con heredar de la clase y reescribir el método deseado 27

28 Swing vs AWT Aunque con ambos se puedan realizar GUIs, Swing ofrece más ventajas Apariencia adaptable (Pluggable Look and Feel, plaf) Componentes ligeros y componentes pesados Arquitectura MVC

29 MVC Arquitectura Modelo-Vista-Controlador Modelos: Mantienen los datos y los métodos de acceso a los datos (típicamente se encapsulan en JavaBeans) Vistas: Representaciones gráficas de los datos de un modelo Controladores: Gestión de eventos Ventajas de MVC Un modelo puede tener múltiples vistas y controladores, esta es la base del PLAF de Swing Las vistas de un modelo son automáticamente notificadas de cambios en el modelo (via el modelo de eventos) Los modelos no tienen que ser modificados para adaptarse a nuevos tipos de vistas o controladores

30

31 Accesibilidad La biblioteca javax.accesibility contiene clases e interfaces que facilitan adaptar un interfaz gráfica Para poder navegar e interactuar con el teclado u otros dispositivos Para reconocer el estado del interfaz gráfico mediante interfaces de voz: lectores de pantalla, amplificadores de pantalla, etc. En j2se 1.5.0 hay 16 interfaces y 11 clases

Interfaz Accesible Implementada por 105 clases gráficas de java.awt y javax.swing (AbstractColorChooserPanel, Applet,,TextField, Window) Ofrece un único método: getaccessiblecontext() Devuelve referencia a un AccessibleContext que nos permite otras formas de interactuar con el componente Devuelve null si el objeto no es accesible. Ojo! si hacemos una subclase de un componente gráfico: o es accesible o implementamos getaccessiblecontext() que devuelva null 32

AccesibleContext Permite obtener referencias a objetos que implementan otras interfaces accesibles que a su vez ofrecen modos estándar de: AccessibleAction: describir las acciones que puede ejecutar el objeto (y ejecutarlas) AccessibleComponent: determinar y fijar la representación del objeto en pantalla AccessibleSelection: determinar los hijos seleccionados del objeto y cambiar la selección AccessibleText: acceder al contenido, atributos y localización del texto AccesibleValue: determinar y fijar el valor numérico del objeto, así como obtener el máximo y mínimo valor 33

34 AccessibleRelation Clase que permite establecer relaciones entre objetos de un GUI Relaciones: CHILD_NODE_OF, CONTROLLED_BY, EMBEDDED_BY, FLOWS_TO, LABEL_FOR, MEMBER_OF, PARENT_WINDOW_OF, SUBWINDOW_OF, Las relaciones se deben poder obtener como strings en el locale correspondiente mediante la función todisplaystring() que la busca en el correspondiente AccessibleBundle. Objeto: Facilitar la navegación y comprender la relación entre componentes

35 Otras clases AccessibleState permite obtener el estado de un componente (BUSY, ENABLED, ICONIFIED, ) AccessibleRole permite determinar el papel de un componente (ALERT, CANVAS, COMBO_BOX, ) AccessibleHyperlink para estandarizar el acceso a los enlaces, es decir conocer las acciones asociadas, su ancla (ej. javax.swing.imageicon), un objeto que permita ejecutar la acción (ej. java.net.url)