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

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

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

Programación de sistemas

Java GUI La librería Swing

Programación de sistemas

Uso de Java Swing. Noviembre de 2013

Capítulo 6: Interfaces es de Usuario.

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

Programación de sistemas

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

Interfaces gráficas de usuario

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 de Interfaces Gráficas en Java

Construir una Interfaz Gráfica

Interfaces gráficas. Jose Jesus García Rueda

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

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.

Programación Orientada a Objetos. Componentes Gráficos

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

Tópicos Avanzados de Programación (TAP3501)

Manejo de eventos AWT

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

Interacción con el Usuario Gestión de Eventos

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Aplicaciones gráficas en Java Librería Swing

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

Ejemplo de GUI con Swing

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

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

JAVA 6. Gestión de Eventos

Programación Basada en Eventos

Desarrollo de aplicaciones gráficas

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

Programación de Eventos

Aplicaciones de Escritorio

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

Desarrollo de aplicaciones de acceso a base de datos con JBuilder 7

Agenda. Contenedores y componentes

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

Práctica 4. Interfaces Gráficas de Usuario Duración 1 sesión

CAPITULO 11. CONSTRUIR INTERFACES GRAFICAS DE USUARIO

UNIDAD I.- Elementos de Interfaces Gráficas

Interfaz Gráfica de Usuario (GUI)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

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

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

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

En el mundo de la programación informática, uno de los lenguajes más populares y conocidos es el de Visual Basic. Creado en 1991 por Alan Cooper para

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Interfaces gráficas I

Indice. CardLayout. Administradores de diseño avanzados. CardLayout: pasos. CardLayout: métodos. Interfaz Gráfica de Usuario (GUI)

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Aplicaciones Java. Juan Manuel Fernández Peña Curso 2011, 2013

Java Avanzado Facultad de Ingeniería. Escuela de computación.

INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse

Introducción a la Programación Orientada a Objetos

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

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

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

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

Clase 35. Aprendizaje activo: Uso de hilos para crear una animación. Hilos y Swing

Creando archivos *.jar 2008

CURSO: Programación de Aplicaciones en Lenguaje JAVA

INTERFAZ GRÁFICO DE USUARIO

GUIA DE JAVA NIVEL BÁSICO

2.1 Elementos gráficos en Java.

PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE

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

APELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...

Arquitecturas cliente/servidor

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

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Programación concurrente

Tópicos Avanzados de Programación (TAP3501)

Tema 8: Gestión de eventos

Eclipse Visual Editor

Java Avanzado Facultad de Ingeniería. Escuela de computación.

III SEMANAS GESTIÓN DE EVENTOS PROGRAMACIÓN II CICLO. Ing. Manuel Jesús Sánchez Chero Profesor del Curso

Interfaces gráficas con Swing

Tema 7. Construcción de Applets en Java

PROGRAMACIÓN CON ACCESO A DATOS

Estructuras de datos utilizando JAVA

Programación para sistemas en red IV. Estructura básica de un MIDlet

Desarrollando aplicaciones mediante componentes

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Ejercicio 1 (proyecto prlistas, paquete listas)

AULA MENTOR. educacion.es

Programación Orientada a Objetos 4. Objeto 5. Clase 6. Relación entre Objeto y Clase 9. Atributos 10. Métodos 11

Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE.

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

J2SE , Grupo Salenda, S.L.

INTERFAZ GRÁFICO DE USUARIO

Formato para prácticas de laboratorio

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.

Tema: Introducción al IDE de Microsoft Visual C#.

Programación conducida por eventos y Applets como ejemplo de Frameworks. Agustín J. González ELO-326. Seminario II 2do. Sem. 2001

INTERFACES GRÁFICAS. Algoritmia y Programación

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);

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); } } 26

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

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 28

29 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

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 30

31 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

32 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)