La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 1 Algunos componentes Swing  Clase JComponent.

Presentaciones similares


Presentación del tema: "©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 1 Algunos componentes Swing  Clase JComponent."— Transcripción de la presentación:

1 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 1 Algunos componentes Swing  Clase JComponent http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

2 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 2 Algunos contenedores Swing  Clase Container http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

3 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 3 Otros Manejadores de presentación http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

4 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 4 Herramienta IDE para desarrollo con GUI NetBeans GUI Builder (Project Matisse) Demo de uso de netbeans con GUI: http://www.netbeans.org/download/flash/netbeans- 50_es/player.html

5 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 5 Manejando eventos de Ratón Los eventos de ratón incluyen interacciones tales como –movimiento del ratón –arrastrar el ratón –presionar los botones de ratón. La interfase MouseListener maneja los botones del ratón –mouseClicked, mouseEntered, mouseExited, mousePressed, y mouseReleased La interfase MouseMotionListener maneja el movimiento del ratón –mouseDragged y mouseMoved.Ver SketchPad Ver Ch14TrackMouseFrame and Ch14SketchPad

6 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 6 Ch14TrackMouseFrame class Ch14TrackMouseFrame extends JFrame implements MouseListener // constructor public Ch14TrackMouseFrame { // poner las prop del marco // poner la salida para mostrar las coord del punto output = System.out; // registrar los eventos del ratón addMouseListener(this);}

7 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 7 mouseClicked() // muestra las coord en las cuales se presionó y soltó el boton izq del ratón mouseClicked public void mouseClicked (MouseEvent event){ int x, y; x = event.getX(); y = event.getY(); output.println (“[” + x + “, ” + y + “]”); }

8 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 8 mousePressed() y mouseReleased() para detectar cuando se presiona y cuando se libera el botón izq del ratón en forma separada, se escriben dos métodos mousePressedpublic void mousePressed (MouseEvent event){ output.println (“Down”);} mouseReleasedpublic void mouseReleased (MouseEvent event){ output.println (“Up”);}

9 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 9 mouseClicked() // Si se presiona dos veces salir caso contrario mostrar las coord public static final int DOUBLE_CLICK = 2; mouseClicked public void mouseClicked (MouseEvent e){ if (e.getClickCount() == DOUBLE_CLICK){ System.exit(0); }else { int x, y; // muestra las coord como antes.....}}

10 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 10 Resto de los Met de la Interfase Si no necesitamos explicitar código para el resto de los mét de la interfase MouseListener se implementan poniendo el cuerpo del mét vacío, pues es obligación implementar todos los mét de una interfase ej mouseEntered public void mouseEntered (MouseEvent ev){} mouseExited public void mouseExited (MouseEvent ev){}

11 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 11 Relación evento y oyente

12 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 12 Receptor vs eventos Un receptor puede gestionar varios eventos Ej: WindowListener: windowActivated (WindowEvent) windowClosed (WindowEvent) windowClosing (WindowEvent) windowDeactivated (WindowEvent) windowDeiconified(WindowEvent) windowIconified (WindowEvent) windowOpened (WindowEvent)

13 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 13 Adaptadores para la recepción de eventos Eventos no deseados   métodos vacíos. Solución   usar adaptadores (clases abstractas) Implementan todos los métodos como vacíos. Los receptores pueden extenderlas definiendo sólo los métodos deseados. ComponentAdapter MouseAdapter FocusAdapter MouseMotionAdapter WindowAdapterKeyAdapter class GestorFrameX extends WindowAdapter { // subclase de adaptador public void windowClosing(WindowEvent evt) { System.exit(0);}}... frameX.addWindowListener(new GestorFrameX());

14 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 14 Clases internas Si no deseamos que nuestras clases de manejo de eventos desciendan de una clase adaptador, pues precisamos que desciendan de otra clase ej JFrame, se pueden definir como clases internas public class MiClase extends JFrame... unObjeto.addMouseListener (new MiAdaptador());... class MiAdaptador extends MouseAdapter{ public void mouseClicked(MouseEvent e){ // implementacion del manejador} }

15 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 15 Clase anónima interna Son clases internas sin nombre Permiten trabajar con clases locales sin tener que ponerles nombre public class MiClase extends JFrame{... unObjeto.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { // implementacion del manejador} } );................. }

16 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 16 Ej Creación de clase anónima // creación de la clase anónima ActionListener listener = new ActionListener (){ public void actionPerformed(ActionEvent ae){ System.out.println (“Ej de clase anónima”); } // registro del componente con el oyente button.addActionListener;

17 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 17 Ambas en un bloque Creación de la clase anónima y registro del oyente en el mismo bloque de código, evitamos el uso de una variable local button.addActionListener(new ActionListener (){ public void ActionPerformed (ActionEvent ae){ System.out.println(“Boton presionado”); } } // termina la definición de la clase ); // finaliza la lista de argumentos, //hay un sólo elem en la lista y es de tipo ActionListener

18 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 18 Conveniencia de las clases internas anónimas El compilador le asigna nombre de clase a las clases anónimas internas. Les asigna el nombre de la clase que los contiene, un signo $ y un número Ej miclase.class miclase$1.class Ventaja: pueden ser más concisas que las clases miembro Desventaja: puede complicar la lectura del código, si el código de la interfase es largo y complejo

19 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 19 Que es un Applet? Es un programa que se ejecuta en un navegador Se transporta en la red, se instala automáticamente y se ejecuta in situ como parte de un documento web Esto genera algunas restricciones sobre lo que puede hacer un applet para proteger el medio en el cual se ejecuta Security manager es el sistema de seguridad de Java Provee met para poner y verificar que es lo que puede o no puede hacer un prog java Determinar lo que pude o no puede hacer un applet depende además de lo especificado en el navegador Ref: Horton

20 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 20 Qué no puede hacer un Applet? A menos que se permita explícitamente un applet: 1)no tiene acceso a los arch locales 2)no puede invocar otros prog de la computadora local 3)no puede comunicarse con ninguna otra máquina exceptuando aquella que contiene el applet

21 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 21 Crear un Applet Arch:HelloWorld.java import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { // sobre escribimos el mét paint() g.drawString("Hello world!", 50, 25); } Compilar: javac HelloWorld.java  HelloWorld.class

22 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 22 Observar que No tiene un met main la clase AppletViewer (VisorApplet) es la clase ppal del programa se define una subclase de Applet que el visor de applet usa cuando se ejecuta el visor de applet envía automáticamente el mensaje paint() con un objeto Graphic como argumento a un applet

23 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 23 Crear el Html y ejecutar el Applet Crear Arch: HelloWorld.html A Simple Program Hello World! Navegador: C:\Java\HelloWorld.html  Hello World!

24 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 24 Visor de Applet (Appletviewer) Appletviewer herramienta incluido en JDK Recibe como parámetro una página HTML y muestra el applet incluído en la misma acción Uso: appletviewer HelloWorld.html Tambien se puede incluir: /** */ en un comentario en el achivo java y ejecutar con c:>\Java> appletviewer HelloWorld.java

25 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 25 Ciclo de vida de un Applet void init ()llamado por el navegador cuando comienza a ejecutarse el applet, se utiliza para iniciar variables void start() llamado por el navegador inmediatamente despues de init(), void stop()llamado por el navegador cuando el usuario sale de la pag que contiene el applet, interrupe las actividades generadas con start() void destroy() despues del mét stop cdo se cierra el navegador, libera todos los recursos,, pde ser útil para mostrar una ventana de confimación

26 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 26 Cont. void repaint() no debería ser sobrecargado y es llamado cuando se necesita redibujar el applet. Podemos llamarlo nosotros desde nuestro código. Llama a update(Graphics). void update(Graphics) llamado por repaint() cuando se necesita actualizar el applet. Su implementación borra el rectángulo y llama a paint() para volver a pintarlo. void paint(Graphics) dibuja el applet y el cual deberemos sobreescribir para poder dibujar lo que nosotros deseemos.. void print(Graphics) equivalente a paint() pero es llamado cuando se va a imprimir el contenido del applet.

27 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 27 Funciones de menú de appletviewer Referencia: http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte6/cap6-1a.html

28 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 28 Etiqueta APPLET Tiene varios parámetros, de los cuales sólo es obligatorio poner los ya usados CODE, WIDTH y HEIGHT. Son los sig: CODE Nombre completo (incluyendo extensión) del fichero que contiene el applet. WIDTH Ancho del rectángulo donde se ejecutará el applet. HEIGHT Altura del rectángulo donde se ejecutará el applet. CODEBASE dirección donde está el fichero.class que contiene al applet. Es necesario ponerlo cuando el applet se encuentra en un directorio distinto al de la página desde la que se le llama, ya que CODE no puede contener directorios, sólo el nombre del fichero.

29 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 29 Paso de parámetros al applet Entre y podremos colocar etiquetas PARAM que nos permitirán pasar parámetros al applet. Tienen dos atributos: VALUE: nombre del parámetro. NAME : valor del parámetro. Podemos obtener esos valores por medio del método getParameter(String), como vemos en el siguiente ejemplo:

30 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 30 Ej uso de parámetros /** Applet MostrarMensaje * */ import java.applet.Applet;// p’ Applet import java.awt.*; // p’ Graphic public class MostrarMensaje extends Applet { String mensaje; public void init() { mensaje = getParameter("Mensaje"); if (mensaje==null) mensaje = "Mensaje por defecto"; } public void paint(Graphics g) { g.drawString(mensaje,20,20); } }

31 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 31 Mét de la Clase Graphics drawString(String texto,x,y) escribe un texto a partir de las coordenadas (x,y). drawLine(x1,y1,x2,y2) dibuja una línea entre las coordenadas (x1,y1) y (x2,y2). drawRect(x,y,ancho,alto), fillRect(x,y,ancho,alto) y clearRect(x,y,ancho.alto) Son encargados de dibujar, rellenar y limpiar, respectiva||, un rectángulo cuya esquina superior izquierda está en las coordenadas (x,y) y tienen el ancho y alto especificados. drawRoundRect(x,y,ancho,alto,anchoArco,altoArco) fillRoundRect(x,y,ancho,alto,anchoArco,altoArco) Equivalentes a los anteriores, pero con las esquinas redondeadas. La forma y tamaño de dichas esquinas viene dada por los dos últimos parámetros.

32 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 32 Mét de la Clase Graphics cont. draw3DRect(x,y,ancho,alto,boolean elevado) fill3DRect(x,y,ancho,alto,boolean elevado) Idem a los primeros, pero dibujan un borde para dar la sensación de que está elevado o hundido (dependiendo del valor del último parámetro) drawOval(x,y,ancho,alto), fillOval(x,y,ancho,alto) Dibujan una elipse con esquina izquierda superior en (x,y) y el ancho y alto especificados. Si son iguales dibujará un círculo.

33 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 33 Mét de la Clase Graphics cont. drawArc(x,y,ancho,alto,anguloInicio,anguloArco) fillArc(x,y,ancho,alto,anguloInicio,anguloArco) Dibuja una arco cuyo primer vértice está en (x,y) y el segundo en (x+ancho,y+alto). La forma del mismo vendrá dado por los dos últimos parámetros. drawPolygon(int[] coordenadasX,int[] coordenadasY,numCoordenadas) fillPolygon(int[] coordenadasX,int[] coordenadasY,numCoordenadas) Dibuja un polígono cerrado del número de puntos especificado en el último parámetro. copyArea(xOrigen,yOrigen,ancho,alto,xDest,yDest) Copia el área cuya esquina superior izquierda está en (xOrigen,yOrigen) y de ancho y alto especificados a la zona que comienza en (xDest, yDest).

34 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 34 Ej FigurinesColor /**APPLET CODE="FigurinesColor.class" WIDTH="200" HEIGHT="70"> */ import java.applet.Applet; import java.awt.*; public class FigurinesColor extends Applet { public void paint(Graphics g) { g.drawString("Adios, mundo cruel",20,20); g.setColor(Color.green); g.fillRoundRect(10,30,50,20,10,10); g.setColor(new Color(30,40,50,100)); g.fill3DRect(50,40,50,20,true); }}

35 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 35 Ej FigurinesColor

36 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 36 Aplicación de los met de Graphic Referencia: http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte15/cap15-6.html

37 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 37 Multihilo (thread) Ejecución multihilo: si deseamos controlar la ejecución en el tiempo, o que se ejecute más de una cosa a la vez En un entorno multihilo cada uno representa un proceso individual ejecutándose en el sistema, ej controlar la entrada y salida de un disco Todos los hilos que se ejecutan concurrentemente disponen del mismo espacio de mem. Difiere de multitarea donde cada proceso disponde de su espacio de mem

38 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 38 Multihilos cont Java permite la creación y control de los hilos de ejecución explícitamente. Los navegadores utilizan diferentes hilos en paralelo para realizar tareas “concurrentemente” ej desplazar la pag mientras continuan cargándose imágenes. Multihilo permite que cada hilo comience y termine tan pronto como sea posible, lo que otorga mejor tiempo de respuesta

39 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 39 Met de Clase de Thread Clase Thread permite controlar a los hilos currentThread() devuelve el obj thread que representa al hilo que se está ejecutando sleep(long) hace que el interprete ponga el hilo en reposo durante la cant de miliseg especificada, transcurrida ese tiempo, el hilo vuelve a estar disponible para su ejecución yield() hace que el intérprete cambie de un hilo al próximo

40 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 40 Met de Instancia de Thread start() crea un hilo y comienza a ejecutarlo run() constituye el cuerpo de un hilo. Este es el único met de la interfase Runnable. Es llamado por start() despues de inicializarlo stop() detención brusca suspend() suspende resume() revive el hilo suspendido setPriority() pone la prioridad (entero de 1 a 10) getPriority() devuelve la prioridad setName(String) getName() isAlive()devuelve true si el hilo está vivo

41 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 41 Trabajar con hilos Hay dos formas para conseguir hilos de ejecución: 1)implementar la interfase Runnable (met run()), forma más frecuente o 2)extender la clase Thread, Ej: class MiHilo extends Thread { public void run (){ // lo que debe hacer el hilo} }

42 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 42 Ej de ejecución con hilos /** * */ import java.applet.Applet; import java.awt.*; public class MostrarCadena extends Applet implements Runnable { String mensaje;// hilos de ejecución int lugar; Thread hilo = null; // declaramos un hilo inicia a null

43 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 43 Ej de ejecución con hilos cont. public void init() { mensaje = getParameter("cadena");//obt la cadena del param if (mensaje==null) mensaje = "Mensaje por defecto"; lugar = getBounds().width; } public void start() {// creamos el hilo y se arranca if (hilo==null) { hilo = new Thread(this); hilo.start(); } public void stop() { hilo = null;// se para el hilo }

44 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 44 Ej de ejecución con hilos cont. public void paint(Graphics g) { g.drawString(mensaje,lugar,20); }// de la interfaz Runnable public void run() { // cdo se crea un hilo com. su vida while (hilo!=null && hilo.isAlive()) {//ejecutando el mét run() lugar -= 1;// desplaza a la izq repaint(); try { hilo.sleep(10); } catch (InterruptedException e) {} // No hacemos nada }// nec. por usar sleep() } Ref: Hilos: http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/introduccion/indice.html http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/introduccion/indice.html Applets: http://www.programacion.com/java/tutorial/applets/


Descargar ppt "©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 14 - 1 Algunos componentes Swing  Clase JComponent."

Presentaciones similares


Anuncios Google