Sunteți pe pagina 1din 32

TOPICOS AVANZADOS DE PROGRAMACION

INSTITUTO TECNOLOGICO DE CERRO AZUL

TOPICOS AVANZADOS DE PROGRAMACION


MATERIA:

DE LA CRUZ CRUZ MARICELA FLORENTINO RAMOS MARTHA LETICIA GONZALES HERNANDEZ FRANCISCO AGUSTIN HERNANDEZ HERNANDEZ MARIA DE LOS ANGELES MEZA CONTRERAS DIANA SARAHI RIVERA RAMOS MILDRED SARID
INTEGRANTES:

UNIDAD 1
TRABAJO:

LIC. IRMA ASCENCIO LLADO


MAESTRO:

ING. EN SISTEMAS COMPUTACIONALES


CARRERA:

4
SEMESTRE:

CERRO AZUL, VER; FEBRERO DE 2012

EQUIPO 5

UNIDAD 1

Pgina 1

TOPICOS AVANZADOS DE PROGRAMACION INDICE


EVENTOS3

TIPOS DE EVENTOS.3

GENERACION Y PROPAGACION DE EVENTOS4

METODOS DE CONTROL DE EVENTOS...5

APPLETS.9

PROGRAMAS....11

BIBLIOGRAFIA.32

EQUIPO 5

UNIDAD 1

Pgina 2

TOPICOS AVANZADOS DE PROGRAMACION

UNIDAD 1.- EVENTOS


Un evento es una accin iniciada por el usuario. Cada vez que se produce un evento, se crea un objeto. La clase padre de los eventos es: java.awt.Event. La clase Event es el jugador principal en el juego de los eventos. Intenta capturar las caracteristicas principales o fundamentales de todos los eventos que genera el usuario.

TIPOS DE EVENTOS
Los eventos se dividen en dos clases: de bajo nivel o de componente, y de alto nivel o semnticos. Eventos de bajo nivel o de componente Son aquellos que representan una entrada sobre un componente visual de un sistema de ventanas en la pantalla. Hacer click con el ratn, oprimir una tecla. La clase Component del AWT, define los mtodos de procesamiento y registro de escucha para eventos a nivel de componente. Por ejemplo el mtodo addMouseListener(), que agrega un escucha para recibir eventos del ratn en un componente,o addKeyListener() para agregar un escucha que reciba eventos del teclado en un componente. Todos los eventos a nivel de componente son subclases de java.awt.event, tales como: ComponentEvent: Evento de bajo nivel que indica que un componente se ha movido, cambiado su tamao, o cambiada su visibilidad. FocusEvent: Evento generado por un componente, que indica que el componente ha ganado o perdido su enfoque en el teclado. InputEvent: es la clase raiz para todos los eventos de entrada a nivel de componente. Los eventos de entrada son despachados a los escuchas antes que que sean procesados normalmente por las fuentes donde ellos se generaron. KeyEvent: indica que se ha presionado una tecla en un componente. Este evento se genera por un objeto componente, por ejemplo un campo de texto, cuando una tecla es presionada, suelta, o se genera un carcter con ella presionndola y soltandola. EQUIPO 5 UNIDAD 1 Pgina 3

TOPICOS AVANZADOS DE PROGRAMACION


MouseEvent: Evento que indica que ha sucedido una accion con el ratn sobre algn componente. Estas acciones pueden ser: Eventos simples del ratn: un boton presionado, suelto o liberado, presionado y liberado, el cursor del ratn entra o sale de un componente. Eventos de movimiento del ratn: el ratn se ha movido, el ratn se ha movido con un boton presionado (dragged). ContainerEvent: Evento que indica que el contenido de un contenedor ha cambiado en virtud de haberse agregado o suprimido un componente. WindowEvent: Evento que indica que una ventana ha cambiado su estado, por ejemplo cuando se abre, se cierra, se activa o desactiva, cuando se minimiza (iconified) o restaura (deconified). Eventos semnticos o de alto nivel Aquellos que representan la funcin o significado de ms alto nivel de un Evento, por ejemplo hacer doble clic con el ratn en una lnea de texto. Los siguientes son algunos eventos semnticos: ActionEvent: evento que indica que ha sucedido una accin definida en un componente, por ejemplo presionar un botn para que realice una funcin definida para ese componente. AdjustmentEvent: este evento se genera cuando se ajusta el valor de de un objeto ajustable. La gestin de eventos : Tipos de eventos 10 - 16 ItemEvent:Este evento indica que un elemento ha sido seleccionado o deseleccionado, cambiando su estado, por ejemplo en una lista al seleccionar uno de sus elementos. TextEvent: evento que indica que un objeto texto por ejemplo TextComponent ha cambiado su texto.

GENERACIN Y PROPAGACIN DE EVENTOS


Tomemos el applet, EventosPro.java. Consta de dos instancias de la clase Button, embebidas dentro de una instancia de la clasePanel. Esta instancia est a su vez embebida dentro de otra instancia de la clasePanel. Esta ltima instancia de la clase Panel est situada junto a una instancia de la clase EQUIPO 5 UNIDAD 1 Pgina 4

TOPICOS AVANZADOS DE PROGRAMACION


TextArea, y ambas estn embebidas dentro de una instancia de la claseApplet. Cuando un usuario interacta con el applet, el sistema Java crea una instancia de la clase Event y rellena sus datos miembro con la informacin necesaria para describir la accin. Es en ese momento cuando el sistema Java permite al applet controlar el evento. Este control comienza por el Componente que recibe inicialmente el evento. Un controlador de eventos solamente necesita una informacin: una referencia a la instancia de la clase Event que contiene la informacin del evento que se ha producido. El valor devuelto por el mtodo handle Event()es importante. Indica al sistema Java si el evento ha sido o no completamente controlado por el controlador. Un valor true indica que el evento ha sido controlado y que su propagacin debe detenerse. Un valor false indica que el evento ha sido ignorado, o que no ha sido controlado en su totalidad y debe continuar su propagacin hacia arriba en el rbol de Componentes. El sistema Java contina de este mismo modo hasta que el evento es controlado en su totalidad o ya no hay Componentes a los que informa el cdigo del controlador de eventos.

METODOS DE CONTROL DE EVENTOS


El mtodo handleEvent() es un lugar para que el programador pueda insertar cdigo para controlar los eventos. A veces, sin embargo, un Componente solamente estar interesado en eventos de un cierto tipo (por ejemplo, eventos del ratn). En estos casos, el programador puede colocar el cdigo en un mtodo de ayuda, en lugar de colocarlo en el mtodo handleEvent(). No hay mtodos de ayuda para ciertos tipos de eventos, aqu est la lista de los que estn disponibles para los programadores: action( Event evt,Object obj ) gotFocus( Event evt,Object obj ) lostFocus( Event evt,Object obj ) mouseEnter( Event evt,int x,int y ) mouseExit( Event evt,int x,int y ) mouseMove( Event evt,int x,int y ) mouseUp( Event evt,int x,int y ) mouseDown( Event evt,int x,int y ) mouseDrag( Event evt,int x,int y ) keyDown( Event evt,int key ) keyUp (

Event

evt,int

key

Algunos de los eventos que ms frecuentemente tendremos que controlar son los siguientes: ACTION_EVENT MOUSE_DOWN KEY_PRESS WINDOW_DESTROY EQUIPO 5 UNIDAD 1 Pgina 5

TOPICOS AVANZADOS DE PROGRAMACION


En la documentacin de la clase Event se encuentra toda la lista de eventos que cualquier aplicacin puede necesitar manejar y su documentacin; como ejemplo de uso vamos a detenernos en el primero de ellos, ACTION_EVENT. Como ejemplo del manejo de eventos vamos a ver este evento que se provoca al pulsar un botn, seleccionar un men, etc. Para su control podemos manejarlo en el mtodo handleEvent() o en el mtodo action(). Los dos mtodos anteriores pertenecen a la clase Component por lo que todas las clases derivadas de sta contendrn estos dos mtodos y se pueden sobrecargar para que se ajuste su funcionamiento a lo que requiere nuestra aplicacin.

CREACIN DE EVENTOS Mejorar El Diseo De Interfaces La interface de usuario es el aspecto ms importante de una aplicacin, tal como ya hemos repetido. Un diseo pobre de la interface es un grave problema para que el usuario pueda obtener todo el partido posible de la aplicacin. Para ser efectivos, no debemos limitarnos a colocar una serie de botones, etiquetas y barras de desplazamiento sobre la pantalla. Desafortunadamente, nadie ha determinado una reglas correctas para del diseo de una buena interface. Cambio De Fuente De Caracteres El font de caracteres con el que se presenta un texto en pantalla influye mucho en el impacto de una interface. Una interface efectiva no debera utilizar una maraa de fuentes, pero s que debera utilizar dos o tres diferentes para aumentar el atractivo y la efectividad de los textos. Utiliza tres tipos de fonts de caracteres (en diferente estilo y diferente tamao) para llamar la atencin del usuario sobre las tres zonas de la interface. La fuente por defecto para todos los Componentes es la fuente Dialog. Java proporciona otras fuentes con propsitos ms especializados, el nmero exacto de fuentes depende de la plataforma, por ello, se puede utilizar el applet ListaFuentes.java para obtener una lista de las fuentes de caracteres disponibles en el sistema.

Cuando un programador necesita presentar un Componente en pantalla, como un objeto TextArea, en una fuente de caracteres distinta a la de defecto, la nueva fuente debe seleccionarse mediante el mtodo setFont(): public void setFont( Font f )

EQUIPO 5

UNIDAD 1

Pgina 6

TOPICOS AVANZADOS DE PROGRAMACION


El mtodo setFont() espera como parmetro una fuente. En el siguiente trozo de cdigo vemos cmo se usa: TextArea ta = new TextArea(); Font f = new Font( "Helvetica",Font.ITALIC,12 ); ta.setFont( f ); Este cdigo con ligeras modificaciones funcionar para cualquier Componente. Si se cambia la fuente de un Contenedor, todos los Componentes colocados dentro del Contenedor automticamente adoptarn la nueva fuente de caracteres. El siguiente cdigo, CambioFuentes.java, muestra esta circunstancia: import java.awt.*; import java.applet.Applet; public class CambioFuentes extends Applet { public static void main( String args[] ) { Frame fr = new Frame( "Cambio de Fuentes" ); CambioFuentes cf = new CambioFuentes(); Font f = new Font( "Helvetica",Font.ITALIC,12 ); fr.setFont( f ); fr.setLayout( new FlowLayout() ); Button b = new Button( "Hola" ); fr.add( b ); Checkbox cb = new Checkbox( "Plsame" ); fr.add( cb ); TextArea ta = new TextArea(); fr.add( ta ); fr.pack(); fr.show(); } } La fuente de caracteres solamente se indica para el objeto Frame, el botn, la caja y el rea de texto tambin utilizarn esta fuente. Colores De Fondo Y Texto El impacto visual del color nunca debe ser desestimado cuando se ataca el diseo de una interface de usuario. El color tiende a atraer la visin y puede utilizarse para llamar la atencin sobre una parte importante del interface. En el ejemplo siguiente, el color rojo alrededor del botn hace que la vista se fije inmediatamente en l. La clase Component proporciona dos mtodos para modificar el color de un Componente. A travs de los mtodos setBackground() y setForeground(), se pueden indicar los colores del fondo y del texto, respectivamente: EQUIPO 5 UNIDAD 1 Pgina 7

TOPICOS AVANZADOS DE PROGRAMACION


public void setBackground( Color c ) public void setForeground( Color c ) Ambos mtodos solamente necesitan un parmetro, un objeto Color. A continuacin mostramos un ejemplo de su uso: TextArea ta = new TextArea(); ta.setBackground( Color.blue ); ta.setForeground( Color.red ); Este cdigo funcionar con ligeras modificaciones para casi todos los Componentes del AWT. Si se cambia el Color de un Contenedor, todos los Componentes colocados dentro de ese Contenedor, automticamente adoptan el nuevo color. El applet, CambioColor.java, ilustra este punto. El Color solamente se fija para el color de fondo del objeto Frame; el botn, la caja y el rea de texto usarn ese mismo color de fondo. import java.awt.*; import java.applet.Applet; public class CambioColor extends Applet { public static void main( String args[] ) { Frame fr = new Frame( "Cambio de Color" ); CambioColor cc = new CambioColor(); fr.setBackground( Color.red ); fr.setLayout( new FlowLayout() ); Button b = new Button( "Hola" ); fr.add( b ); Checkbox cb = new Checkbox( "Plsame" ); fr.add( cb ); TextArea ta = new TextArea(); fr.add( ta ); fr.pack(); fr.show(); } } La calidad de soporte del color vara mucho de una plataforma a otra. Bajo Windows '95, la clase Button ignora totalmente los comandos de color y se empea en permanecer bajo un patrn de grises. Por otro lado, el fondo de la clase Label parece ser transparente. Algunos Componentes no se presentan en pantalla con un mismo color para un mismo objeto Color. Bajo Windows '95, un fondo de color naranja aparece como naranja en muchos Componentes (excepto en los botones), pero se presenta como amarillo cuando se trata de objetos TextArea o TextField. El soporte del color en Solaris parece ser mucho ms consistente. EQUIPO 5 UNIDAD 1 Pgina 8

TOPICOS AVANZADOS DE PROGRAMACION

Fijar El Tamao Preferido Otro ingrediente importante de una buena interface es el tamao con el cual aparecer un Componente o Contenedor en la pantalla. En el corazn del control de la composicin del interface est el layout manager, que es capaz de fijar el tamao y la posicin de los Componentes que se vayan incorporando al layout que est manejando. Esto, indirectamente, tambin influye en el tamao del Contenedor. En este caso, en lugar de llamar a un mtodo para indicar cul debe ser el tamao de un Componente, hay que derivar una nueva clase del Componente y redefinir el mtodo preferredSize() que devolver el tamao preferido. El layout manager llama al mtodo preferredSize() para determinar cul debe ser el tamao preferido para cada Componente.

APPLET
Un applet Java es un applet escrito en el lenguaje de programacin Java. Los applets de Java pueden ejecutarse en un navegador web utilizando la Java Virtual Machine(JVM), o en el AppletViewer de Sun. Entre sus caractersticas podemos mencionar un esquema de seguridad que permite que los applets que se ejecutan en el equipo no tengan acceso a partes sensibles (por ej. no pueden escribir archivos), a menos que uno mismo le d los permisos necesarios en el sistema; la desventaja de este enfoque es que la entrega de permisos es engorrosa para el usuario comn, lo cual juega en contra de uno de los objetivos de los Java applets: proporcionar una forma fcil de ejecutar aplicaciones desde el navegador web. En Java, un applet es un programa que puede incrustarse en un documento HTML, es decir en una pgina web. Cuando un navegador carga una pgina web que contiene un applet, este se descarga en el navegador web y comienza a ejecutarse. Esto permite crear programas que cualquier usuario puede ejecutar con tan solo cargar la pgina web en su navegador. El navegador que carga y ejecuta el applet se conoce en trminos genricos como el "contenedor" de los applets. Los applets de Java suelen tener las siguientes ventajas: * Son multiplataforma (funcionan en Linux, Windows, Mac OS, y en cualquier sistema operativo para el cual exista una Java Virtual Machine). * El mismo applet puede trabajar en "todas" las versiones de Java, y no slo la ltima versin del plugin. Sin embargo, si un applet requiere una versin EQUIPO 5 UNIDAD 1 Pgina 9

TOPICOS AVANZADOS DE PROGRAMACION


posterior del Java Runtime Environment (JRE), el cliente se ver obligado a esperar durante la descarga de la nueva JRE. * Es compatible con la mayora de los navegadores web. * Puede ser almacenado en la memoria cach de la mayora de los navegadores web, de modo que se cargar rpidamente cuando se vuelva a cargar la pgina web, aunque puede quedar atascado en la cach, causando problemas cuando se publican nuevas versiones. * Puede tener acceso completo a la mquina en la que se est ejecutando, si el usuario lo permite. * Puede ejecutarse a velocidades comparables a la de otros lenguajes compilados, como C++ (dependiendo de la version de la JVM). * Puede trasladar el trabajo del servidor al cliente, haciendo una solucin web ms escalable tomando en cuenta el nmero de usuarios o clientes. Los applets de Java suelen tener las siguientes desventajas: * Requiere el plugin de Java, que no est disponible por defecto en todos los navegadores web. * No puede iniciar la ejecucin hasta que la JVM est en funcionamiento, y esto puede tomar tiempo la primera vez que se ejecuta unapplet. * Si no est firmado como confiable, tiene un acceso limitado al sistema del usuario - en particular no tiene acceso directo al disco duro del cliente o al portapapeles. * Algunas organizaciones slo permiten la instalacin de software a los administradores. Como resultado, muchos usuarios (sin privilegios para instalar el plugin en su navegador) no pueden ver los applets. * Un applet podra exigir una versin especfica del JRE. Existen diferencias entre un programa autnomo y un applet: * Restricciones de seguridad: los applets son considerados cdigo de poca confianza1 (a excepcin de que lleven una firma digital) ya que son compartidos por todos los usuarios de Internet. Por ejemplo, no se permite el acceso a ficheros locales ni conectarse a un servidor distinto al que est alojado el applet. * Necesitan un navegador para ser visualizados, o un visor de applets como appletviewer. * No tienen un mtodo principal. EQUIPO 5 UNIDAD 1 Pgina 10

TOPICOS AVANZADOS DE PROGRAMACION


Crear un applet Para crear un applet necesitamos escribir una clave de la clase Applet del paquete java.applet.*; import java.applet.*; public class MiApplet extends Applet { //Cuerpo del ''applet''. } El cdigo anterior declara una nueva clase MiApplet que hereda todas las capacidades de la clase Applet de Java. El resultado es un fichero MiApplet.java. Una vez creada la clase que compone el applet, escribimos el resto del cdigo y despus lo compilamos, obteniendo el fichero MiApplet.class.

~PROGRAMAS~
CALCULADORA

import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Stack;

import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JTextField;

EQUIPO 5

UNIDAD 1

Pgina 11

TOPICOS AVANZADOS DE PROGRAMACION

public class CalculadoraApplet extends JApplet implements ActionListener {

private static final long serialVersionUID = 3221707769370092517L; Container container; JTextField datos; JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0; JButton opSuma, opResta, opMult, opDiv; JButton punto, calcular, limpiar; Stack<String> pila; char operacion; boolean operacionTerminada=false;

public void init(){ container = this.getContentPane(); container.setLayout( new GridLayout(6,1) );

pila = new Stack<String>();

Font fuente = new Font("Verdana", Font.BOLD, 18);

/* Formato del campo de entrada */ datos = new JTextField(); datos.setFont(fuente); datos.setEditable(false); EQUIPO 5 UNIDAD 1 Pgina 12

TOPICOS AVANZADOS DE PROGRAMACION

limpiar = new JButton("Limpiar");

Container renglon2 = new Container(); renglon2.setLayout( new GridLayout(1,4) );

Container renglon3 = new Container(); renglon3.setLayout( new GridLayout(1,4) );

Container renglon4 = new Container(); renglon4.setLayout( new GridLayout(1,4) );

Container renglon5 = new Container(); renglon5.setLayout( new GridLayout(1,4) );

renglon2.add(b1 = new JButton("1")); renglon2.add(b2 = new JButton("2")); renglon2.add(b3 = new JButton("3")); renglon2.add(opSuma = new JButton("+")); renglon3.add(b4 = new JButton("4")); renglon3.add(b5 = new JButton("5")); renglon3.add(b6 = new JButton("6")); renglon3.add(opResta = new JButton("-")); renglon4.add(b7 = new JButton("7")); renglon4.add(b8 = new JButton("8")); EQUIPO 5 UNIDAD 1 Pgina 13

TOPICOS AVANZADOS DE PROGRAMACION


renglon4.add(b9 = new JButton("9")); renglon4.add(opMult = new JButton("*")); renglon5.add(punto = new JButton(".")); renglon5.add(b0 = new JButton("0")); renglon5.add(calcular = new JButton("=")); renglon5.add(opDiv = new JButton("/"));

/* Aplicando fuente a todos los botones */ b1.setFont(fuente); b2.setFont(fuente); b3.setFont(fuente); b4.setFont(fuente); b5.setFont(fuente); b6.setFont(fuente); b7.setFont(fuente); b8.setFont(fuente); b9.setFont(fuente); b0.setFont(fuente); opSuma.setFont(fuente); opResta.setFont(fuente); opMult.setFont(fuente); opDiv.setFont(fuente); punto.setFont(fuente); calcular.setFont(fuente);

EQUIPO 5

UNIDAD 1

Pgina 14

TOPICOS AVANZADOS DE PROGRAMACION


/* Agregando accin a todos los botones */ b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this); b0.addActionListener(this); opSuma.addActionListener(this); opResta.addActionListener(this); opMult.addActionListener(this); opDiv.addActionListener(this); punto.addActionListener(this); calcular.addActionListener(this); limpiar.addActionListener(this);

container.add(datos); container.add(renglon2); container.add(renglon3); container.add(renglon4); container.add(renglon5); EQUIPO 5 UNIDAD 1 Pgina 15

TOPICOS AVANZADOS DE PROGRAMACION


container.add(limpiar);

public void actionPerformed(ActionEvent e) {

if(operacionTerminada){ datos.setText(""); operacionTerminada = false; }

if( e.getSource()==b1 ){ datos.setText(datos.getText()+1); } else if( e.getSource()==b2 ){ datos.setText(datos.getText()+2); } else if( e.getSource()==b3 ){ datos.setText(datos.getText()+3); } else if( e.getSource()==b4 ){ datos.setText(datos.getText()+4); } else if( e.getSource()==b5 ){ datos.setText(datos.getText()+5); EQUIPO 5 UNIDAD 1 Pgina 16

TOPICOS AVANZADOS DE PROGRAMACION


} else if( e.getSource()==b6 ){ datos.setText(datos.getText()+6); } else if( e.getSource()==b7 ){ datos.setText(datos.getText()+7); } else if( e.getSource()==b8 ){ datos.setText(datos.getText()+9); } else if( e.getSource()==b9 ){ datos.setText(datos.getText()+9); } else if( e.getSource()==b0 ){ datos.setText(datos.getText()+0); } else if( e.getSource()==punto ){ //Slo si no contiene punto lo agrega y slo que no sea vaco if( datos.getText().equals("") ) !datos.getText().contains(".") && !

datos.setText(datos.getText()+"."); } else if(e.getSource()==opSuma){ preparaOperacion('+'); } EQUIPO 5 UNIDAD 1 Pgina 17

TOPICOS AVANZADOS DE PROGRAMACION


else if(e.getSource()==opResta){ preparaOperacion('-'); } else if(e.getSource()==opMult){ preparaOperacion('*'); } else if(e.getSource()==opDiv){ preparaOperacion('/'); } else if(e.getSource()==calcular){ calculaOperacion(); } else if( e.getSource()==limpiar ){ datos.setText(""); pila.removeAllElements(); } }

private void calculaOperacion() { if( !datos.getText().equals("") && !pila.isEmpty() ){ if(operacion=='+') datos.setText( Double.toString( Double.parseDouble( pila.pop() ) + Double.parseDouble( datos.getText() ) )); else if(operacion=='-') datos.setText( Double.toString( Double.parseDouble( pila.pop() ) - Double.parseDouble( datos.getText() ) )); EQUIPO 5 UNIDAD 1 Pgina 18

TOPICOS AVANZADOS DE PROGRAMACION


else if(operacion=='*') datos.setText( Double.toString( Double.parseDouble( pila.pop() ) * Double.parseDouble( datos.getText() ) )); else if(operacion=='/') datos.setText( Double.toString( Double.parseDouble( pila.pop() ) / Double.parseDouble( datos.getText() ) )); }

operacionTerminada = true;

private void preparaOperacion(char c) { operacion = c; System.out.println("operacion: "+operacion); if(!datos.getText().equals("")) pila.push(datos.getText());

datos.setText(""); }

EQUIPO 5

UNIDAD 1

Pgina 19

TOPICOS AVANZADOS DE PROGRAMACION

EVENTO DE MOUSE import java.awt.Graphics; import java.awt.event.*; import java.applet.Applet; public class Ratoncito2 extends Applet implements MouseListener { private int mouseX = 25; private int mouseY = 25;

//Registrar esta instancia de applet para capturar eventos de //MouseLister public void init ( ) { addMouseListener (this) ; }

public void paint (Graphics g) { g.drawString ("Hola Ingenieros en Sistemas", mouseX, mouseY) ; } EQUIPO 5 UNIDAD 1 Pgina 20

TOPICOS AVANZADOS DE PROGRAMACION

//Procesa el evento MousePressed MouseListener public void mousePressed (MouseEvent evt) { mouseX = evt.getX ( ) ; mouseY = evt.getY ( ) ; repaint ( ) ; }

//No estamos usando los otros eventos del mouse. public void mouseClicked (MouseEvent e) { } public void mouseEntered (MouseEvent e) { } public void mouseExited (MouseEvent e) { } public void mouseReleased (MouseEvent e) { } }

Cdigo para HTML


<HTML> <HEAD> <TITLE> Un applet de Java </TITLE> </HEAD> <BODY bgcolor="purple">

<MARQUEE><FONT COLOR="bluelight" Calculadora~</FONT></marquee> EQUIPO 5

FACE="JOKERMAN"

size=7>~

UNIDAD 1

Pgina 21

TOPICOS AVANZADOS DE PROGRAMACION


<p align="center">

<applet Code="CalculadoraApplet.class" width="400" height="400" > </applet>

<applet Code="Ratoncito2.class" width="400" height="400" > </applet>

</p> </BODY> </HTML

EQUIPO 5

UNIDAD 1

Pgina 22

TOPICOS AVANZADOS DE PROGRAMACION

EVENTO MOUSE /* * Fichero: ArrastrarGrafico.java * Autor: Chuidiang * Fecha: 6/06/07 21:40 */ package chuidiang.ejemplos.arrastrar_grafico;

import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener;

import javax.swing.JFrame; import javax.swing.WindowConstants;

/** * Ejemplo de grfico que se puede arrastrar con el ratn. * * @author Chuidiang * EQUIPO 5 UNIDAD 1 Pgina 23

TOPICOS AVANZADOS DE PROGRAMACION


*/ public class ArrastrarGrafico extends Canvas implements MouseMotionListener { /** * serial uid */ private static final long serialVersionUID = -4273648398171436938L;

/** * Posicion x del vrtice superior izquierdo del rectngulo. */ private int xRectangulo = 0;

/** * Posicion y del vrtice superior izquierdo del rectngulo */ private int yRectangulo = 0;

/** * Ancho del rectngulo */ private int anchoRectangulo = 100;

/** * Alto del rectngulo EQUIPO 5 UNIDAD 1 Pgina 24

TOPICOS AVANZADOS DE PROGRAMACION


*/ private int altoRectangulo = 100;

/** * Si actualmente se est arrastrando o no el rectngulo. */ private boolean arrastrando = false;

/** * x en la que estaba anteriormente el ratn. */ private int xAnteriorRaton;

/** * y en la que estaba anteriormente el ratn */ private int yAnteriorRaton;

/** * Crea un nuevo objeto ArrastrarGrafico. */ public ArrastrarGrafico() { addMouseMotionListener(this); } EQUIPO 5 UNIDAD 1 Pgina 25

TOPICOS AVANZADOS DE PROGRAMACION

/** * Para darle un tamao por defecto al Canvas de dibujo * * @return Dimension por defecto. */ @Override public Dimension getPreferredSize() { return new Dimension(500, 500); }

/** * Dibuja el rectngulo en la posicin indicada por por xRectangulo e * yRectangulo. * * @param g Graphics con el que dibujar. */ @Override public void paint(Graphics g) { g.setColor(Color.GREEN); g.fillRect(xRectangulo, yRectangulo, anchoRectangulo, altoRectangulo); }

EQUIPO 5

UNIDAD 1

Pgina 26

TOPICOS AVANZADOS DE PROGRAMACION


/** * Crea la ventana con el Canvas y lo visualiza * * @param args Se ignoran */ public static void main(String[] args) { JFrame v = new JFrame("Arrastrar Grafico"); ArrastrarGrafico c = new ArrastrarGrafico(); v.getContentPane().add(c); v.pack(); v.setVisible(true); v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); }

/** * Mtodo al que se llama cuando se arrastra el ratn. * Se comprueba con el atributo arrastrando si est empezando el arrastre o * ya se esta en medio del mismo. * Si se comienza el arrastre, se guardan las coordenadas del ratn que * vienen en el evento MouseEvent y se cambia el valor del atributo arrastrando. * Si se est en medio de un arrastre, se calcula la nueva posicin del * rectngulo y se llama al mtodo repaint() para que se pinte. * * @param e Evento del ratn EQUIPO 5 UNIDAD 1 Pgina 27

TOPICOS AVANZADOS DE PROGRAMACION


*/ public void mouseDragged(MouseEvent e) { // Si comienza el arrastre ... if (!arrastrando) { // ... y el ratn est dentro del rectngulo if (estaDentro(e)) { // Se guardan las posiciones del ratn xAnteriorRaton = e.getX(); yAnteriorRaton = e.getY(); // y se marca que ha comenzado el arrastre. arrastrando = true; } } else { // Si ya haba empezado el arrastre, se calculan las nuevas // coordenadas del rectngulo xRectangulo = (xRectangulo + e.getX()) - xAnteriorRaton; yRectangulo = (yRectangulo + e.getY()) - yAnteriorRaton;

// Se guarda la posicin del ratn para el siguiente clculo xAnteriorRaton = e.getX(); EQUIPO 5 UNIDAD 1 Pgina 28

TOPICOS AVANZADOS DE PROGRAMACION


yAnteriorRaton = e.getY();

// y se manda repintar el Canvas repaint(); } }

/** * Para ver si el ratn est dentro del rectngulo. * Si est dentro, puede comenzar el arrastre. * * @param e El evento de ratn * * @return true si el ratn est dentro del rectngulo */ private boolean estaDentro(MouseEvent e) { if ( (e.getX() > xRectangulo) && (e.getX() < (xRectangulo + anchoRectangulo)) && (e.getY() > yRectangulo) && (e.getY() < (yRectangulo + altoRectangulo))) { return true; } EQUIPO 5 UNIDAD 1 Pgina 29

TOPICOS AVANZADOS DE PROGRAMACION

return false; }

/** * El ratn se mueve sin arrastrar. Se marca fin de arrastre. * * @param e E */ public void mouseMoved(MouseEvent e) { arrastrando = false; } }

EQUIPO 5

UNIDAD 1

Pgina 30

TOPICOS AVANZADOS DE PROGRAMACION

EQUIPO 5

UNIDAD 1

Pgina 31

TOPICOS AVANZADOS DE PROGRAMACION


BIBLIOGRAFIA

http://www.slideshare.net/javi2401/eventos-en-java-presentation

EQUIPO 5

UNIDAD 1

Pgina 32

S-ar putea să vă placă și