Programación Java Curso C GUI

Documentos relacionados
Tópicos Avanzados de Programación (TAP3501)

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

Interacción con el Usuario Gestión de Eventos

Programación de sistemas

Programación Java Curso C Draw

Uso de Java Swing. Noviembre de 2013

Programación de Eventos

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

Ejemplo de GUI con Swing

Desarrollo de aplicaciones gráficas

Programación de sistemas

Tema 8: Gestión de eventos

Interfaz Gráfica de Usuario (GUI)

Construir una Interfaz Gráfica

En este método la implementación de la interface de usuario donde se produce el evento y la implementación del oyente están en clases separadas.

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

Interfaces gráficas de usuario

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

Manejo de eventos AWT

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

Agenda. Contenedores y componentes

Interfaces gráficas con Swing

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

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

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

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

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)

Interfaces Gráficas de Usuario en Java Julio Introducción. 2. Crear una ventana 2

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

Interfaces gráficas I

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

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

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

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

INTERFAZ GRÁFICO DE USUARIO APLICACIONES DE EJEMPLO

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Introducción a la Programación Orientada a Objetos

Interfaces gráficas de usuario

Examen de Programación II (Ingeniería Informática)

Pontificia Universidad Católica del Ecuador

Introducción a componentes Swing

Programación Orientada a Objetos

Ingeniería del Software. Capa de Presentación. Java 2 con JFC/SWING. Componentes visuales. Gestión de la interfaz

GUIA DE JAVA NIVEL BÁSICO

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

Java Avanzado. Lenguaje de Programación Java. Interfaces Gráficas de Usuario con Java. Elaboró: Oscar Alejandro González Bustamante

2.1 Elementos gráficos en Java.

Interfaces gráficas. Jose Jesus García Rueda

AULA MENTOR. educacion.es

INTERFAZ GRÁFICO DE USUARIO

Unidad III. Interfaz de Escritorio SWING

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

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

Paquetes de java. java.applet

GESTIÓN DE EVENTOS GUI EN JAVA 13/04/2007 DAI. Evento: Objeto que describe qué sucede

Introducción a la Programación en Java. Unidad 7 Abstract Window Toolkit

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

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

Programación Orientada a Objetos. Antecedentes del Lenguaje Java

Interfaces de usuario [Interfaces de usuario con Java]

Laboratorio de Aplicaciones Telemáticas Ingeniería Técnica de Telecomunicación Especialidad en Telemática

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Java GUI La librería Swing

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

Derechos de Acceso: COMPOSICION

1. Guía de programación con jopas

Práctica 1. Monitores en Java.

Aplicaciones gráficas en Java Librería Swing

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

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

Pontificia Universidad Católica del Ecuador

75-62 Técnicas de Programación Concurrente II 2004 java Threads

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

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

Programación Orientada a Objetos, 3 er curso Ejercicios resueltos

Ingeniería del Software Swing

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

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

INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse

Establecer una conexión con una base de datos o acceder a cualquier fuente de datos tabular Enviar enunciados SQL. Procesar los resultados

Curso de JAVA. Introducción. Introducción: Web del curso. Introducción: Libros. Thinking in Java. Índice del curso. Introducción: Listas de correo

OBJETIVO. Repasar algunas de las instrucciones básicas del lenguaje en JAVA.

Federico Peinado

Programando con J2ME. Rogelio Ferreira Escutia

Construcción dinámica de menús en Java. La clase MiMenu.

SWING: JButton, JCheckBox y JRadioButton Javier Ovejero Sánchez

Tema 7. Construcción de Applets en Java

Curso de Java POO: Programación orientada a objetos

JAVA 7 Los fundamentos del lenguaje Java

Conocimientos previos

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

PROGRAMA DE MATERIA SOFTWARE DE BASE Y PROGRAMACION DE SISTEMAS SOFTWARE DE BASE Y PROGRAMACION DE SISTEMAS

// Suma.java // Programa de suma que utiliza a JOptionPane para entrada y salida. import javax.swing.joptionpane; // el programa usa JOptionPane

Transcripción:

Programación Java Curso 2006-1 C GUI FIUBA Introducción: Prof.. María Feldgen Ing. Osvaldo Clúa Java 1.0 poseía un modelo de interface gráfica o GUI (Graphical User Interface) que se basaba en la plataforma en la que se implementaba java. Cada elemento de la GUI era mapeado sobre algún elemento adecuado de la plataforma, llamado peer. Se podían manipular los peers en forma directa. Java 1.1 introduce un nuevo modelo de interface gráfica: AWT (Abstract Window Toolkit); al mismo tiempo que deja obsoleta (deprecated) al modelo anterior. Este es el modelo que vamos a usar en el curso. Java 1.x (o Java 2 según el marketing de SUN) introduce Swing que es un marco de trabajo o framework que facilita la creación y uso de las GUI. Usaremos AWT Es muy importante contar con la documentación (no el tutorial) ya que los métodos y clases no van a ser presentados en detalle. Explorando AWT 1. /** PruBoton: Botones en AWT 2. Estos botones no hacen nada, es mas; para salir de 3. la aplicacion hay que dar Control-C en la ventana de invocacion. 4. */ 5. import java.awt.*; /* hace accesible el package */ 6. 7. class PruBoton extends Frame 8. { PruBoton(String s) 9. { super(s); 10. setsize(200,100); 11. setlayout(new FlowLayout()); // Manejador de Layout 12. for (int i=0; i<6; i++) 13. add(new Button("Boton " + i)); 14. setvisible(true); 15. } Y para probarla usamos la clase 16.class TestPruBoton 17.{ public static void main(string[] args) 18. { PruBoton buttonframe = new PruBoton("Ejemplo de Botones"); 19. } 20.} De las muchas clases que componen el package java.awt.extendemos a la clase Frame. La genealogía de esta clase es: -1-

java.lang.object clase madre de todas -- java.awt.component Es un objeto con representación gráfica, que puede interactuar con el usuario -----java.awt.container Es un componente capaz de contener otros componentes --------java.awt.window Es una ventana sin bordes, capaz de obtener foco ------------java.awt.frame Es una ventana con bordes y título Su único método es un constructor, que llama al constructor de su Super con un String que aparecerá como título ("Ejemplo de Botones") en TestPruButton. Completar usando la documentación: La llamada setsize(...) indica el tamaño en pixels y es un método de... (completar) setlayout(...) crea un new Flowlayout() y lo activa como el manejador de Layout. Es un método de la clase... El manejador de Layout es el responsable de como se verán los componentes de un container, y como reaccionaran ante las operaciones de cambio de tamaño o resizing. Luego se agregan 6 botones con una etiqueta; y se hace visible al conjunto con setvisible(...) que es de la clase... Ejemplo anterior en Swing 2. /** PruBoton: Botones en Swing 3. Estos botones no hacen nada, es mas; para salir de 4. la aplicacion hay que dar Control-C en la ventana 5. de invocacion. 6. */ 7. import java.awt.*; 8. import javax.swing.*; 9. 10.class PruBoton extends JFrame 11.{ PruBoton(String s) 12. { super(s); 13. setsize(200,100); 14. getcontentpane().setlayout(new FlowLayout()); 15. // Manejador de Layout 16. for (int i=0; i<6; i++) 17. getcontentpane().add(new JButton("Boton " + i)); 18. setvisible(true); 19. } 20.} Ejercicios básicos: 1) Probar el resultado de usar como LayoutManager a BorderLayout,. Seguir los ejemplos de la documentación. 2) Escribir una clase que despliegue seis Checkbox. Los tres últimos deben pertenecer a un mismo CheckboxGroup 3) Escribir una clase que despliegue una Choice con los Ítems ("ichi", "ni", "san", "yon", "go",...,"ju") (o sea, los números del 1 al 10 en...) 4) En el ejercicio 3, usar una List en vez de una Choice. Eventos: En Java los objetos AWT pueden generar eventos. En realidad, cualquier objeto puede generarlos pero la funcionalidad de los objetos AWT ya incluye esta posibilidad. Un objeto capaz de generar eventos es un objeto Observable. -2-

Además, Cualquier Objeto es capaz de recibir eventos. Un objeto capaz de recibir eventos es un objeto Observer. La clase madre de todos los eventos en AWTEvent y las subclases son ComponentEvent, FocusEvent, KeyEvent, MouseEvent, WindowEvent, ActionEvent, AdjustmentEvent, ItemEvent, TextEvent. La clase AWTEvent tiene los siguientes métodos: AWTEvent( Object source, int id) lo crea public int getid( ) devuelve la ID o tipo del evento public String tostring() public String paramstring() Para ver parámetros del usuario protected void consume() Marca el evento como consumido protected boolean isconsumed() indica si fue marcado En general, el usuario no maneja esta clase en forma indirecta, sino que le interesan las subclases ComponentEvent, tiene una serie de subclases para el manejo de eventos de bajo nivel (apretar y soltar teclas, etc.) FocusEvent, KeyEvent, MouseEvent, AdjustmentEvent, son propias de cada componente WindowEvent se refiere a los controles de la ventana (por ejemplo, el botón de cierre) ActionEvent es el mas usado, ya que se activa al accionar un componente (click de un botón, selección de una lista, tecla return en un TextField ItemEvent cuando un ítem es seleccionado o des-seleccionado. Para tratar a los eventos, se deben programar ciertos métodos. Estos métodos se agrupan según lo tipos de eventos en un archivo que indica nada mas que los tipos involucrados llamado interface. Se dice que el objeto debe implementar la interface. Estas interfaces para eventos (listener) son: ActionListener, AdjustmentListener, ComponentListener, ContainerListener, FocusListener, ItemListener, KeyListener, MouseListener, MouseMotionListener, TextListener, WindowListener ActionListener tiene un único método actionperformed(actionevent e) que es el usado para manejar eventos de ese tipo. WindowListener tiene siete métodos: windowactivated(windowevent), windowclosed(windowevent), windowclosing(windowevent), windowdeactivated(windowevent) windowdeiconified(windowevent), windowiconified(windowevent), windowopened(windowevent). Si solo nos interesa manejar el botón de cerrar, deberíamos programar WindowClosing( ) pero la interface nos obliga a programar los siete Para evitar esto, existe una clase que ya los tiene programados, pero que no hacen nada. Esta clase es un adapter y se llama WindowAdapter de manera que lo único necesario es extender la clase WindowAdapter y reprogramar windowclosing(...) Para atender un evento, es decir, para hacerse observable, la clase debe registrarse. Para ello, los componentes disponen de los métodos necesarios. Como ejemplo: 1. /** BotonesList Al oprimir el boton se agrega un item a la lista 2. */ 3. import java.awt.*; 4. import java.awt.event.*; // para importar java.awt.event.* 5. 6. class BotonesList extends Frame implements ActionListener 7. // ActionListener es la escucha generica -3-

8. // tiene un solo metodo :actionperformed 9. { public Button []boton ; 10. public List lista; 11. 12. BotonesList(String s) 13. { super(s); // Crea el frame con titulo 14. setsize(200,160); 15. setlayout(new FlowLayout()); 16. boton=new Button[6]; 17. for (int i=0; i<6; i++){ 18. boton[i]=new Button("Boton " + i); 19. add(boton[i]); 20. boton[i].addactionlistener(this);} 21.// Es el propio manejador de eventos, por eso se usa this 22. lista= new List (4); // Lista con cuatro elementos visibles 21. add(lista); 22. //Uso de un Adapter para no hacer seis nulos y uno que sirva 23. addwindowlistener( 24. new WindowAdapter () { 25. public void windowclosing(windowevent event) 26. { setvisible(false); 27. System.exit(0); } } 28. ); 29. // Eso es todo amigos... La clase se declara en el llamado 30. setvisible(true); 31. } 32. 33. public void actionperformed(actionevent event) 34.// El manejador de eventos 35. { lista.add(event.getactioncommand()); } 36.} Ejercicios básicos con eventos: (Todos deben manejar el botón de cerrar de la ventana) 1) Para el ejercicio 3 de los ejercicios básicos, proveer un Label donde aparezca el ítem seleccionado y lo traduzca. 2) Escribir una clase con dos List y una TextArea donde aparezcan los Ítems seleccionados de cada List, indicando de que List fueron tomados. -4-

3) Agregar al ejercicio de los Botones una List que indique que botón fue oprimido. 4) Escribir una clase con tres botones. Dos de ellos se habilitan y deshabilitan según un tercero. Cada click debe quedar registrado en una TextArea 5) Escribir una clase con una Scrollbar horizontal. su Maximun es de 10000 y su BolckIncrement de 100. Al cambiar su posición, un AdjustmentListener implementará el método adjustementvaluechanged y pasará este valor a un TextField. 6) Para el ejercicio 5, escribir además el paso inverso (Un nuevo valor en el TextField cambia el Scrollbar). 7) Combinar el ejercicio 6 con una List de unidades para obtener un valor y una unidad (Km, m, cm) y colocar lo obtenido en un Label. -5-

8) Al ejercicio 7 añadirle otro Label donde aparezca el valor convertido en inches. 9) Combinar dos interfaces como las del ejercicio 7 para poder pasar en ambos sentidos de km, m y cm a inch, feet, yard o mile en forma gráfica (con el scrollbar) o textual indistinta. -6-