Sie sind auf Seite 1von 41

Unidad I Eventos

Modelo de Delegacin de Eventos

De acuerdo con Javasoft, las principales caractersticas de partida que han originado e en el AWT, son:
o o o o o o

Que sea simple y fcil de aprender Que soporte una clara separacin entre el cdigo de la aplicacin y el cdigo del in Que facilite la creacin de robustos controladores de eventos, con menos posibilid ms potente en tiempo de compilacin) Suficientemente flexible para permitir el flujo y propagacin de eventos Para herramientas visuales, permitir en tiempo de ejecucin ver cmo se generan Que soporte compatibilidad binaria con el modelo anterior

Los eventos ahora estn organizados en jerarquas de clases de eventos.

El nuevo modelo hace uso de fuentes de eventos (Source) y receptores de eventos (L objeto que tiene la capacidad de detectar eventos y notificar a los receptores de evento Aunque el programador puede establecer el entorno en que se producen esas notifica defecto.

Un objeto receptor de eventos es una clase (o una subclase de una clase) que impleme definidos un determinado nmero de interfaces receptores, donde cada interfaz declara de los eventos de su clase. Luego, hay un emparejamiento natural entre clases de ev ejemplo, hay una clase de eventos de ratn que incluye muchos de los eventos asociad interfaz que se utiliza para definir los receptores de esos eventos.

Un objeto receptor puede estar registrado con un objeto fuente para ser notificado de la clase para los que el objeto receptor est diseado. Una vez que el objeto receptor est eventos, el suceso de un evento en esta clase automticamente invocar al mtodo sob en el mtodo sobreescrito debe estar diseado por el programador para realizar las a suceda el evento.

Algunas clases de eventos, como los de ratn, involucran a un determinado conjunto de que implemente el interfaz que recoja estos eventos debe sobreescribir todos los m prevenir esto, de forma que no sea tan tedioso y no haya que sobreescribir mtodos q un conjunto de clases intermedias, conocida como clases Adaptadoras (Adapter).

Estas clases Adaptadores implementan los interfaces receptor y sobreescriben todos vacos. Una clase receptor puede estar definida como clase que extiende una clas implemente el interfaz. Cuando se hace esto, la clase receptor solamente necesita sobre

inters para la aplicacin, porque todos los otros mtodos sern resueltos por la clase A

Uno de los objetos receptor que se implementan con mayor frecuencia son los de la inte ventanas, lo que haria necesario sobreescribir los seis mtodos de la interfaz. Por lo qu es la clase WindowAdapter en vez de implementar la interfaz WindowListener. La seis mtodos de la interfaz con mtodos vacos, por lo que la clase receptor no necesit el que necesita.

Gestin de Eventos

El paquete java.awt.event es el que contiene la mayor parte de las clases e interfaces de eventos es un concepto que trabaja de la siguiente manera:

Una fuente genera un evento y lo enva a uno a ms oyentes o auditores, que han est reciben ese evento y una vez recibido lo procesan y lo devuelven.

Una fuente es un objeto que genera un evento. Esto ocurre cuando cambia de alguna m Las fuentes pueden generar ms de un tipo de eventos.

Una fuente tiene que ir acompaada de auditores para que estos reciban las notificacio cada tipo de evento tiene su propio mtodo de registro. La forma general es: Public void addTypeListener(TypeListener el)

Por ejemplo el mtodo que registra o acompaa a un auditor de evento de teclado es evento, se notifica a todos los auditores registrados, que reciben una copia del objeto e multicasting del evento.

Una fuente tambin puede proporcionar un mtodo que permita a un auditor elimina evento y la forma general es: Public void removeTypeListener(TypeListener el);

Aqu Type es el nombre del evento y el es una referencia al auditor. Por ejemplo para b removeKeyListener( ).

Auditores de eventos.

Un auditor es un objeto que es avisado cuando ocurre un evento. Tiene dos requisi registrado o ir acompaado por una o ms fuentes para recibir notificaciones sobre los tiene que implementar mtodos para recibir y procesar notificaciones.

Clases de eventos principales en java.awt.event Clase de evento ActionEvent Descripcin Se genera cuando se presiona un botn, se hace doble clic en un elemento de una lista, o se selecciona un elemento de tipo men. Se genera cuando se manipula un scrollbar. Se genera cuando un componente se oculta, se mueve, se cambia de tamao o se hace visible. Se genera cuando se aade o se elimina un componente de un contenedor. Se genera cuando un componente gana o pierde el foco. Superclase abstracta de cualquier clase de evento de entrada de componente. Se genera cuando se hace click en un checkbox o en un elemento de una lista; tambien ocurre cuando se hace una seleccin en una opcin choice o cuando se selecciona o deselecciona un elemento de un men de opciones. Se genera cuando se recibe una entrada desde el teclado. Se genera cuando el ratn se arrastra, se mueve, se hace clic, se presiona, o se libera;

AdjustmentEvent ComponentEvent ContainerEvent FocusEvent InputEvent ItemEvent

KeyEvent MouseEvent

TextEvent WindowEvent

tambin se genera cuando el ratn entra o sale de un componente. Se genera cuando se cambia el valor de un rea de texto o un campo de texto Se genera cuando una ventana se activa, se cierra, se desactiva, se minimiza, se maximiza, se abre, o se sale de ella.

ActionEvent

Define cuatro constantes enteras que se pueden utilizar para identificar cualquier modific ALT_MASK,CTRL_MASK,META_MASK,SHIFT_MASK una ltima constante entera A para identificar eventos de accin.

Para identificar el evento de accin generado se utiliza el mtodo String getActionComm getSource( ) devuelve el objeto del tipo que genero el evento. Para identificar el tipo de tecla modificadora se uso se utiliza el mtodo int getModifiers(

AdjustmentEvent

En este tipo de evento hay cinco constantes enteras que definen la actividad realizada p

BLOCK_DECREMENT el usuario hace click dentro de la scrollbar para decrementar su v

BLOCK_INCREMENT el usuario hace click dentro de la scroll bar para incrementar su va TRACK se arrastra el botn movible de la scroll bar

UNIT_DECREMENT se ha hecho click en el botn que esta al final de la scroll bar para d

UNIT_INCREMENT se ha hecho click en el botn que esta al final de la scroll bar para in

Adems hay una constante entera ADJUSTEMENT_VALUE_CHANGED que indica que

Para determinar el tipo de ajuste se realiza mediante el mtodo int getAdjustmentType( )

Y la cantidad de ajuste se obtiene mediante int getValue( )

ItemEvent

Hay dos tipos de eventos de elemento y se identifican por las siguientes constantes ente DESELECTED el usuario deselecciona un elemento SELECTED el usuario selecciona un elemento

Adems define una constante para indicar que ocurri un cambio y es ITEM_STATE_CH

Tambien define tres mtodos unos es Object getItem( ) que devuelve la referencia al obj

ItemSelectable getItemSelectable( ) que se usa para obtener una referencia a los objeto evento.

Int getStateChange( ) que devuelve el cambio de estado ocurrido ya se SELECTED o DE

KeyEvent

Define tres constantes enteras y son KEY_PRESSED, KEY_RELEASED Y KEY_TYPE se presiona o se libera una tecla y el ultimo se genera cuando se genera un carcter.

Hay eventos que se generan que no siempre producen caracteres y es cuando se p constantes definidas son: VK_0VK_9 y VK_A.VK_Z VK_ENTER,VK_ESCAPE,VK_CANCEL,VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT, VK_PAGE_DOWN,VK_PAGE_UP,VK_SHIFT,VK_ALT,VK_CONTROL VK especifica cdigo de teclas virtuales y son independientes de SHIFT y ALT

En caso que no este definido el carcter generara un CHAR_UNDEFINED O VK_UNDE

Los mtodos que mas se usan son char getKeyChar( ) y int getKeyCode( ) respectivam el tipo de tecla presionada.

MouseEvent Define las siguientes constantes para identificar los tipos de eventos y son: MOUSE_CLICKED el usuario hace click con el ratn MOUSE_DRAGGED el usuario arrastra el ratn MOUSE_ENTERED el ratn mete un componente MOUSE_EXITED el ratn sale de un componente MOUSE_MOVED se mueve el ratn MOUSE_PRESSED se presiona el ratn MOUSE_RELEASED se libera el raton Los mtodos mas usados son: int getX( ), int getY( ) que devuelven las coordenadas tambien las devuelve pero mediante un objeto de tipo Point

El mtodo int getClickCount( ) que indica el nmero de clicks que se han hecho con el ra

WindowEvent define las siguientes constantes: WINDOW_ACTIVATED se ha activado la ventana WINDOW_CLOSED se ha cerrado la ventana WINDOW_CLOSING se ha pedido que se cierre la ventana WINDOW_DEACTIVATED la ventana a dejado de estar activa WINDOW_DEICONIFIED se ha mostrado la ventada tras pulsar su icono WINDOW_ICONIFIED se ha minimizado la ventana WINDOW_OPENED se ha abierto la ventana

La funcin que se utiliza es Window getWindow( ) que devuelve el objeto que ha genera

Fuentes de Eventos

Todas las fuentes de eventos del AWT soportan el multienvo a receptores. Esto sig mltiples receptores de una sola fuente; en otras palabras, la notificacin de que se ha enviar a uno o ms objetos receptores simultneamente.

El API de Java no garantiza el orden en que se enviarn los eventos a los receptore fuente, para ser informados de esos eventos. En caso de que el orden en que se importante en el programa, se deberan encadenar los receptores de un solo objeto rec el hecho de que los datos del evento estn encapsulados en un solo objeto hace extremadamente simple.

Como en el caso de los receptores, se puede hacer una distincin entre los evento semntico. Las fuentes de eventos de bajo nivel sern las clases de elementos o com (botones, barras de desplazamiento, cajas de seleccin, etc.), porque cada componen especficos. El JDK 1.2 permite registrar receptores sobre fuentes de eventos de los sigu java.awt.Component addComponentListener addFocusListener addKeyListener addMouseListener addMouseMotionListener java.awt.Container addContainerListener java.awt.Dialog addWindowListener java.awt.Frame addWindowListener

Para determinar todos los tipos de eventos que se pueden comunicar desde un objeto cuenta la herencia. Por ejemplo, como se ver en uno de los programas que se present del ratn sobre un objeto Frame y notificar a un objeto MouseListener de la ocurrenci anterior no se muestre un MouseListener sobre un Frame. Esto es posible porque un o clase Component y, MouseListener est definida en la clase Component.

Los receptores de eventos que se pueden registrar de tipo semntico sobre objetos fu JDK 1.2 son: java.awt.Button addActionListener java.awt.Choice addItemListener java.awt.Checkbox addItemListener java.awt.CheckboxMenuItem addItemListener java.awt.List addActionListener addItemListener java.awt.MenuItem addActionListener java.awt.Scrollbar

addAdjustmentListener java.awt.TextArea addTextListener java.awt.TextField addActionListener addTextListener

Ejemplos de componentes que pueden generar eventos Origen evento Button Checkbox Choice List de Descripcin Genera eventos de accin (ActionEvent) cuando se presiona el botn. Genera eventos de elementos (ItemEvent) cuando se selecciona o deselecciona un checkbox. Genera eventos de elementos cuando se cambia de opcin choice. Genera eventos de accin cuando se hace doble click sobre un elemento, genera eventos de elemento cuando se selecciona o deselecciona un elemento. Gener eventos de accin cuando se selecciona un elemento de men; genera eventos de lemento cuando se selecciona o se deselecciona un elemento de un men de opciones. Genera eventos de ajuste (AdjustmentEvent) cuando se manipula el scrollbar. Genera eventos de texto (TextEvent) cuando el usuario introduce un carcter. Genera eventos de ventana (WindowEvent) cuando una ventana se activa, se cierra, se desactiva, se minimiza, se maximiza, se abre o se sale de ella.

Menu Item

Scrollbar Text components Window

Adaptadores Muchos interfaces EventListener estn diseados para recibir mltiples

clas

interfazMouseListener puede recibir eventos de pulsacin de botn, al soltar el botn, a declara un mtodo para cada uno de estos subtipos. Cuando se implementa un inte mtodos que se declaran en ese interfaz, incluso aunque se haga con mtodos vacos. necesario redefinir todos los mtodos declarados en el interfaz porque no son tiles para

Por ello, el AWT proporciona un conjunto de clases abstractas adaptadores (Adapter) clase adaptador implementa un interfaz y redefine todos los mtodos declarados por el in se satisface ya el requerimiento de la redefinicin de todos los mtodos.

Se pueden definir clases Receptor extendiendo clases adaptadores, en vez correspondiente. Esto proporciona libertad al programador para redefinir solament intervienen en la aplicacin que desarrolla.

De nuevo, hay que recordar que todos los mtodos declarados en un interfaz correspon de la clase de eventos correspondiente, y que el objeto Fuente notifica al Receptor determinado invocando al mtodo redefinido del interfaz.

Las clases Adaptadores que se definen en el JDK 1.2 son las que se indican a continuac java.awt.ComponentAdapter java.awt.FocusAdapter java.awt.KeyAdapter java.awt.MouseAdapter java.awt.MouseMotionAdapter java.awt.WindowAdapter

Interfaces de auditor que ms se utilizan

ActionListener La interfaz tiene que definir el mtodo:

void actionPerformed(ActionEvent e) el cual se invoca cuando ocurre un evento de a

AdjustmentListener La interfaz tiene que definir el mtodo:

void adjustmentValueChanged(AdjustmetEvent ae) el cual se invoca cuando ocurre u

ComponentListener La interfaz tiene que definir los siguientes mtodos: void componentResized(ComponentEvent ce) void componentMoved(ComponentEvent ce) void componentShown(ComponentEvent ce) void componentHiden(ComponentEvent ce)

Se invocan cuando a un componente se le cambia de tamao, se mueve, se muestra

ContainerListener La interfaz tiene que definir los siguientes mtodos: void componentAdded(ContainerEvet ce) void componentRemoved(ContainerEvet ce)

Se invocan cuando se aade un componente a un contenedor y cuando se borra un c

FocusListener La interfaz tiene que definir los siguientes mtodos:

void focusGained(FocusEvent fe) void focusLost(FocusEvent fe) Se invocan cuando se gana el foco o se pierde el foco ItemListener La interfaz tiene que definir el siguiente mtodo: void itemStateChanged(ItemEvent ie) Se invoca cuando cambia el estado de un elemento

KeyListener La interfaz tiene que definir los siguientes mtodos: void keyPressed(KeyEvent ke) void keyReleased(KeyEvent ke) void keyTyped(KeyEvent ke) Se invocan cuando se presiona, libera una tecla y cuando se introduce un carcter.

MouseListener La interfaz tiene que definir los siguientes mtodos: void mouseClicked(MouseEvent me) void mouseEntered(MouseEvent me) void mouseExited(MouseEvent me) void mousePressed(MouseEvent me)

void mouseReleased(MouseEvent me)

Se invocan cuando se presiona, cuando entra a un componente, cuando sale, cuando

MouseMotionListener La interfaz tiene que definir los siguientes mtodos: void mouseDragged(MouseEvent me) void mouseMoved(MouseEvent me) Se invocan cuando se arrastra y se mueve el ratn.

TextListener La interfaz tiene que definir el siguiente mtodo: void textChanged(TextEvent te)

Se invoca cuando ha ocurrido un cambio en un rea de texto o en un campo de texto

WindowListener La interfaz tiene que definir los siguientes mtodos: void windowActivated(WindowEvent we) activa void windowDeactivated(WindowEvent we) desactiva void windowClosed(WindowEvent we) cierra void windowClosing(WindowEvent we) peticin de cerrar void windowDeiconfied(WindowEvent we)

void windowIconfied(WindowEvent we) minimiza void windowOpened(WindowEvent we) abre

Se invocan cuando se activa, se desactiva, se cierra una ventana, se esta cerrando cuando se abre a partir de un icono y cuando se abre una ventana.

Clases adaptadoras que se usan cuando no se requieren definir todos los eventos

Clase Adaptadora ComponentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter

Interfaz auditora ComponentListen ContainerListen FocusListener KeyListener MouseListener MouseMotionListener WindowListener

Applets

Los applets son aplicaciones que se pueden ejecutar sobre Internet, para construir u derivada la clase existente Applet.

Los applets deben de incluir dos paquetes que son: java.awt y java.applet

Los applets son ejecutados por un navegador de internet o bien por un visor de applets una pgina web como sigue:

<applet code=miapplet width=200 height=60> </applet>

Estructura de un Applet Import java.awt.*; Import java.applet.*; Public class esqueleto extends Applet{ Public void init(){ //cdigo de inicializacin } Public void start(){ // cdigo que comienza y reanuda la ejecucin } Public void stop(){ //cdigo que detiene la ejecucin } Public void destroy( ){ //se ejecuta cuando termina el applet ultimo} Public void paint(Graphics g){ //cdigo para dibujar el contenido de la ventana }

Orden de ejecucin de los mtodos en los apple Cuando comienza un applet el AWT llama a los siguientes mtodos:

init() start() y paint()

Cuando finaliza un applet se llama a los siguientes mtodos.

stop() destroy()

init es el primer mtodo y es cuando se deberan de inicializar las variables.

start se llama inmediatamente despues del init es llamado para reanudar un applet de parado. Este se llama cada vez que un documento HTML de un applet se visualiza en la

paint se le llama cada vez que la salida del applet tiene que redibujarse y tambien ejecutarse o miestras el applet tenga que dibujar una salida.

stop se llama cuando el navegador deja el documento HTML que contiene el applet, cua

destroy se llama cuando determina que ya acabo el applet

Ejemplo de un applet import java.awt.*; import java.applet.*; public class app extends Applet{ String msg; public void init() { setBackground(Color.blue); //establecer el color del fondo

setForeground(Color.white); //establecer el color de la fuente msg="en el init "; } public void start(){ msg+="dentro de start "; } public void paint(Graphics g){ msg+="en el interior del paint"; g.drawString(msg,10,30); }

Programa HTML <html> <head> <title>Primer applet</title> <applet code=app.class width=300 height=200> </applet> </head> <body> <b>corriendo</b> </body> </html>

Trabajo con graficos.

El AWT tiene una amplia variedad de mtodos graficos graficos. Todos los grficos se una ventana principal de un applet, una ventana hija de un applet, o una ventana de una

El origen (0,0) de cada ventana est en la esquina superior izquierda. Las coordenada sobre una ventana tienen lugar a traves de un contexto grfico. Un contexto grafico es se obtiene de 2 maneras:

Se pasa a un applet cuando se llama a algunos de sus mtodos, como paint( ) Es devuelto por el mtodo getGraphics( ) de Component

Lneas de dibujo.

Las lneas se dibujan con el mtodo drawLine(int x,int y,int x1,int y1) que realiza una line Dibujar rectngulos.

Los mtodos drawRect( ) y fillRect dibujan un rectngulo slo con el borde o relleno, res void drawRect(int x,int y,int anchox,int largoy) void fillRect(int x,int y, int anchox,int largoy)

Para dibujar un rectngulo redondeado, se usan los mtodos drawRoundRect(int x,i ydiam) o fillRoundRect(int x,int y, int anchox,int largoy,int xdiam,int ydiam). El dimet estan dados por xdiam,ydiam. Dibujar crculos y elipses.

Para dibujar una elipse se utiliza el mtodo drawOval(int x,int y,int anchox, int largoy) mtodo fillOval(int x,int y,int anchox, int largoy) Dibujar arcos.

Los arcos se pueden dibujar con drawArc(int x,int y, int anchox,int altoy,int anguloinicia anchox,int altoy,int anguloinicial, int angulofinal); Dibujar polgonos.

Tambin se pueden dibujar figuras con formas arbitrarias utilizando los mtodos drawP fillPolygon(int x[ ],int y[ ],int numpuntos).

Los vrtices del poligono estan especificados por las parejas de coordenadas que viene Tamao de los graficos.

Para obtener las dimensiones de la ventana se obtienen mediante getSize( ) este dev con las diemsiones de la ventana. Trabajar con color.

El sistema de color del AWT permite especificar cualquier color. Para ello se busca e teniendo en cuenta las limitaciones del hardware de visualizacin (monitor,etc) en el qu

applet. El color esta encapsulado en la clase Color.

La clase Color define varias consantes por ejemplo Color.black esto para especificar un puede crear sus propios colores utilizando uno de los constructores de colores. L siguientes: Color(int red,int green,int blue) Color(int rgbValue) Color(flota red,flota green,flota blue) Para establecer el color para los grficos.

Por defecto, los objetos graficos se dibujan en el color actual del frente. Se puede c setColor(Color nuevocolor) y se puede obtener el color en curso llamando a Color getCo Establecer el modo de pintar.

El modo de pintar determina como se dibujan los objetos en una ventana. Por defecto, ventana se superpone al contenido de lo que hubiese en la anterior. Sin embargo, es objetos en modo XOR utilizando el mtodo setXORMode( ), que tiene el formato siguien void setXORMode(Color xorColor)

donde xorColor especifica el color que se utilizara para hacer el XOR en la ventana cua modo XOR es que se garantiza que el nuevo objeto siempre sea visible, cualquiera que objeto y para volver al modo de sobrescribir, hay que llamar a setPaintMode( ). Trabajo con los tipos de letra. Determinacin de los tipos de letra disponibles.

Cuando se trabajan con tipos de letra suele ser necesario saber que tipos de letra est obtener esta informacin, se utiliza el mtodo getAviableFontFamilyNames( ) definido po String[ ] getAviableFontFamilyNames( )

Este mtodo devuelve un array de strings con los nombres de las familias de tipos de le Ademas del mtodo getAllFonts( ) est definido por la clase GraphicsEnvironment:

Font[ ] getAllFonts( ) Este mtodo devuelve un arreglo de objetos Font que contiene todos los tipos de letras

Como estos mtodos son miembros de GraphicsEnvironment, se necesita una referenc Se puede obtener esa referencia utilizando el mtodo esttico getLocalGraphicsE GraphicsEnvironment: static GraphicsEnvironment getLocalGraphicsEnvironment( ) Creacin y seleccin del tipo de letra Para seleccionar un nuevo tipo de letra, primero hay que construir un objeto Font que formas del constructor Font tiene el siguiente formato: Font(String fontName,int fontStyle,int pointSize)

fontName especifica el nombre del tipo de letra deseado. Se puede especificar el nomb el nombre face. Java admite los siguientes tipos de letra: Dialog, DialogInput, Sans Ser es el tipo de letra que utilizan las cajas de dilogo del sistema, tambien es el tipo de letra

El estilo del tipo de letra se especifica con fontStyle y puede estar formado por una o Font.PLAIN, Font.BOLD y Font.ITALIC. Para combinar estilos se puede hacer un OR. especifica un estilo en negrita y cursiva. El tamao del tipo de letra, en puntos, se espe de letra propio, se utiliza el mtodo setFont( ), que esta definido por Component, y tiene void setFont(Font fontObj) donde fontObj es el objeto que contiene el tipo de letra deseado.

Visualizacin de varias lineas de texto. Lo que ms se utiliza es FontMetrics para determinar el espacio entre lneas de texto y un string que se esta visualizando.

Para determinar el espacio entre lineas, se puede utilizar el valor devuelto por getLea del tipo de letra, hay que sumar al valor devuelto por getAscent( )el valor devuelto por ge la altura maxima del tipo de letra es utilizando getHeight( ) y para determinar la longitud con stringWidth( ). Ver ejercicio y centrar texto.

Ejemplo de manejo de primitivas de java usando AW import java.applet.*; import java.awt.*; public class primitivas extends Applet{ public void init(){ setBackground(Color.BLUE); setForeground(Color.WHITE);

} public void paint(Graphics g){ showStatus("uso de primitivas"); g.drawString("Inicio de las primitivas de java",10,20); g.setColor(Color.GREEN); g.drawLine(10,10,100,100); g.drawRect(200,200,250,250); g.fillRect(100,100,170,180); g.drawRoundRect(300,300,50,50,10,10); g.setColor(Color.green); g.drawOval(20,20,50,50); g.fillOval(50,50,50,50); g.drawArc(400,300,50,50,0,360);

g.fillArc(400,300,50,50,0,45); int cx[]={500,600,550}; int cy[]={200,200,100}; int cx1[]={500,600,550}; int cy1[]={400,400,300}; g.drawPolygon(cx,cy,3); g.fillPolygon(cx1,cy1,3); Dimension d; d=getSize(); int x=d.width; int y=d.height; String xs=x+" "+y; g.drawString(xs,100,100); } }

Ejemplo de manejo de letras de java usando AWT import java.awt.*; import java.applet.*; public class letras extends Applet{ Font f=new Font("Dialog",Font.PLAIN|Font.ITALIC,12); public void init(){

setFont(f); } public void paint(Graphics g){ setForeground(Color.BLUE); g.drawString("cadenas de texto",10,10);

} }

import java.awt.*; import java.applet.*; public class tipofont extends Applet{ public void paint(Graphics g){

GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnviron

String msg[]=new String[60]; String Fontlist[]; Font fuentes[]; Fontlist=ge.getAvailableFontFamilyNames(); fuentes=ge.getAllFonts(); for(int i=0;i<msg.length;i++){

msg[i]=fuentes[i]+" "; } for(int j=3;j<msg.length;j++) g.drawString(msg[j],10,j*11); }

Gestores de Organizacin.

FlowLayout es el gestor de organizacin por defecto y utilizado en los ejemplos anterio de arriba abajo por default. FlowLayout( ) FlowLayout( int how) How puede ser FlowLayout.LEFT, FlowLayout.CENTER, FlowLayout.RIGHT

FlowLayout( int how, int horz, int vert) los ultimos especifican el espacio entre elementos

BorderLayout es la segunda forma de organizacin habitual por reas, norte, sur, este, BorderLayout( ) BorderLayout( int horiz,int vert) igual define espacios Constantes que especifican las regiones: BorderLayout.CENTER BorderLayout.EAST

BorderLayout.NORTH BorderLayout.SOUTH BorderLayout.WEST

La forma de aplicar las organizacin es add(componente,region) GridLayout Organiza los componentes en una cuadricula de 2 dimensiones GridLayout( ) GridLayout(int numfilas, int numcolumnas ) GridLayout(int numfilas, int numcolumnas,int hor,int vert )

AWT

AWT es el acrnimo del X Window Toolkit para Java, donde X puede ser cualquier Another o Asqueroso; aunque parece que Sun se decanta por Abstracto, seriedad biblioteca de clases Java para el desarrollo de Interfaces de Usuario Grficas. La versi JDK se desarroll en slo dos meses y es la parte ms dbil de todo lo que represen ofrece es demasiado simple, no se han tenido en cuenta las ideas de entornos grficos que lanzar algo al mercado haya tenido mucho que ver en la pobreza de AWT.

Javasoft, en vista de la precariedad de que hace gala el AWT, y para asegurarse q generar interfaces grficas sean fcilmente transportables entre plataformas, se ha u Design para crear un conjunto de clases que proporcionen una sensacin visual agrada programador. Esta coleccin de clases son las Java Foundation Classes (JFC), que e clases, al menos en este momento: AWT, Java 2D, Accesibilidad, Arrastrar y Soltar y Sw

AWT, engloba a todos los componentes del AWT que existan en la versin 1.1.2 del JD versiones posteriores:
o o o

Java 2D es un conjunto de clases grficas bajo licencia de IBM/Taligent, que todav Accesibilidad, proporciona clases para facilitar el uso de ordenadores y tecno lupas de pantalla, y cosas as Arrastrar y Soltar (Drag and Drop), son clases en las que se soporta Glasgow

JavaBeans Swing, es la parte ms importante y la que ms desarrollada se encuentra. Ha si y proporciona una serie de componentes muy bien descritos y especificados de independiente de la plataforma en que se ejecute el applet o la aplicacin que u extiende el AWT aadiendo un conjunto de componentes, JComponents, y sus c componentes de Swing que son anlogos a los de AWT, y algunos de ellos parti Vista-Controlador), aunque Swing tambin proporciona otros widgets nuevos com

La estructura bsica del AWT se basa en Componentes y Contenedores. Estos ltimos a su respecto y son Componentes a su vez, de forma que los eventos pueden trat Componentes, corriendo por cuenta del programador (todava no hay herramientas de las piezas, as como la seguridad de tratamiento de los eventos adecuados. Con Swing los JComponentes son subclases de Container, lo que hace posible que widgets Swing tanto de AWT como de Swing, lo que hace prever interesantes posibilidades.

A continuacin se aborda la programacin con el AWT fundamentalmente para ten profundizando en las dems caractersticas del lenguaje Java, aunque tambin se deJComponentes cuando Swing tenga implementado alguno que corresponda el del AW

Estructura del AWT

La estructura de la versin actual del AWT se puede resumir en los puntos que se expon
o o o o o o o

Los Contenedores contienen Componentes, que son los controles bsicos No se usan posiciones fijas de los Componentes, sino que estn situados a (layouts) El comn denominador de ms bajo nivel se acerca al teclado, ratn y manejo de e Alto nivel de abstraccin respecto al entorno de ventanas en que se ejecute l llamadas a X, ni hWnds, etc.) La arquitectura de la aplicacin es dependiente del entorno de ventanas, en vez de Es bastante dependiente de la mquina en que se ejecuta la aplicacin (no puede tamao en cada mquina) Carece de un formato de recursos. No se puede separar el cdigo de lo que es diseador de interfaces (todava)

Componentes y Contenedores

Una interfaz grfica est construida en base a elementos grficos bsicos, los Com Componentes son los botones, barras de desplazamiento, etiquetas, listas, cajas d Componentes permiten al usuario interactuar con la aplicacin y proporcionar informaci el estado del programa. En el AWT, todos los Componentes de la interface de usuario so

uno de sus subtipos.

Los Componentes no se encuentran aislados, sino agrupados dentro de Contened organizan la situacin de los Componentes; adems, los Contenedores son en s mism ser situados dentro de otros Contenedores. Tambin contienen el cdigo necesario p forma del cursor o modificar el icono de la aplicacin. En el AWT, todos los clase Container o uno de sus subtipos. Tipos de Componentes En el rbol siguiente se muestra la relacin que existe entre todas las clases que interfaces de usuario, presentando la jerarqua de Clases e Interfaces: Clases:
o o o o o o

o o

Adjustable BorderLayout CardLayout CheckboxGroup Color Component o Button o Canvas o Checkbox o Choice o Container o Panel o Applet o ScrollPane o Window o Dialog o FileDialog o Frame o Label o List o Scrollbar o TextComponent o TextArea o TextField Cursor Dimension

o o o o o o o o o o o o

o o o o o o

Event FlowLayout Font FontMetrics Graphics GridLayout GridBagConstraints GridBagLayout Image Insets MediaTracker MenuComponent o MenuBar o MenuItem o CheckboxMenuItem o Menu o PopMenu MenuShorcut Point Polygon PrintJob Rectangle Toolkit

Interfaces:
o o o o

LayoutManager LayoutManager2 MenuContainer Shape

AWT - Componentes

Component es una clase abstracta que representa todo lo que tiene una pintado en pantalla y puede recibir eventos.

No tiene constructores pblicos, ni puede ser instanciada. Sin embargo, desd para proporcionar una nueva caracterstica incorporada a Java, conocida como

Los Objetos derivados de la clase Component que se incluyen en el Abst aparecen a continuacin:
o o o o o

o o o o

Button Canvas Checkbox Choice Container o Panel o Window o Dialog o Frame Label List Scrollbar TextComponent o TextArea o TextField

Sobre estos Componentes se podran hacer ms agrupaciones y quiz l diferencie a los Componentes segn el tipo de entrada. As habra Comp textualcomo los botones de pulsacin (Button), las listas (List), botones de de seleccin (Choice) y botones de comprobacin (CheckboxGroup); C textualcomo los campos de texto (TextField), las reas de texto (TextArea Componentes sin acomodo fijo en ningn lado, en donde se encontraran C desplazamiento (Scrollbar), zonas de dibujo (Canvas) e (Panel, Window, Dialog yFrame), que tambin pueden considerarse como

Componentes de AWT.
Etiquetas.

El control mas sencillo de utilizar es una etiqueta es un objeto de la clase Label, y pantalla. Las etiquetas son controles pasivos que no admiten ninguna interaccin con constructores: Label( ) Label(String str);

Label(String str,int how);

El primer constructor crea una etiqueta vacia. La segunda versin crea una etiqueta co por default esta justificada a la izquierda y la tercera crea una etiqueta con el string pueden se de tres formas: Label.RIGTH, Label.LEFT, Label.CENTER Los mtodos para manipular las etiquetas son: void setText( String arg) poner la nueva cadena a la etiqueta String getText( ) obtener el contenido de la etiqueta

Los alineamientos se pueden especificar mediante dos mtodos: void setAlignment(int how) int getAlignment( )

Botones

El control que mas se utiliza son los botones. Un botn es un componente que contien cuando es pulsado, los botones son objetos de la clase Button y este proporciona dos co Button( ) Button(String Str)

El primero constructor crea un boton vacio y el segundo crea un botn con la etiqueta es Se puede asignar la etiqueta y obtener la etiqueta utilizando los mtodos: void setLabel(String str) String getLabel( )

Evento generado es un ActionEvent. (Interfaz ActionListener y metodo actionPerformed)

Checkbox

Los checkbox son objetos de la clase Checkbox. Un checkbox es un objeo que se opcin. Esta formado por un pequeo cuadro que puede contener o no una marca asociada a cada checkbox que describe que opcin representa. Para cambiar el estad sobre el. Los checkbox se pueden utilizar individualmente o como parte de un grupo y lo Checkbox( ) Checkbox(String str) Checkbox(String str, boolean on) Checkbox(String str, boolean on,CheckboxGroup cbgroup) Checkbox(String str, CheckboxGroup cbgroup, boolean on)

El primer formato crea un checkbox cuya etiqueta es vacia y el estado est no selec checkbox cuya etiqueta esta especificada en str e igualmente no esta seleccionada. El etiqueta esta especificada en str y puede estar seleccionado si on es true y si esta en quinto formato crea un checkbox cuya etiqueta esta especificada en str y si no perten debe de estar a null y on especifica si esta seleccionado o no. Los modos utilizados para el manejo de los checkbox son: boolean getState( ) void setState(boolean on) String getLabel( ) void setLabel(String str) devuelve el estado del checkbox (seleccionado o no) establece el estado del checkbox (seleccionado o no) devuelve la etiqueta asignada al checkbox establece la etiqueta al checkbox

Evento generado es ItemEvent. (Interfaz ItemListener y mtodo itemStateChanged) CheckboxGroup

Se puede crear un conjunto de checkbox que sean mutuamente excluyente en el que s solo uno de los checkbox del grupo. A estos checkbox se les suele llamar botones de como los controles de radio para abrir un coche donde solo abre un carro en especifico

checkbox mutuamente excluyentes, primero hay que definir el grupo al que pertene cuando se crean los checkbox. Los grupos de checkbox son objetos de la clase C constructor por defecto, que crea un grupo vaco. Los mtodos definidos para manejar los ChecboxGroup son: Checkbox getSelectedCheckbox( ) devuelve el checkbox actualmente seleccionado void setSelectedCheckbox(Checkbox cual) para establecer el checkbox seleccionado Evento generado es ItemEvent. (Interfaz ItemListener y mtodo itemStateChanged)

Controles Choice

La clase Choice se utiliza para crear un lista pop-up de elementos para que el usuario p control choice es una forma de men. Cuando est inactivo, un componente Choice mostrar el elemento que esta seleccionado. Cuando el usuario hace clic en l, apare puede realizar una nueva seleccin. Cada elemento de la lista es un string que aparece que se aadi al objeto Choice y solo esta definido un constructor que crea una lista vac

Para aadir un elemento a la lista, hay que llamar addItem o add que contienen los sigui void addItem (String name); void add(String name); Para determinar el elemento seleccionado se puede llamar a los siguientes mtodos: String getSelectedItem( ) int getSelectedIndex( ) int getSelectedCount( ) devuelve el nmero de elementos en la lista void select(String name) para indicar el elemento que debe estar seleccionado. void select(int index) String getItem(int index) para obtener el nombre de un elemento de una posicin.

Evento generado es ItemEvent. (Interfaz ItemListener y mtodo itemStateChanged)

Listas

La clase List proporciona una lista de seleccin compacta, con desplazamiento, que pe diferencia de Choice, que solo muestra el nico elemento que se puede seleccionar en List que muestre cualquier nmero de opciones en una ventana. Tambien se puede realizar selecciones multiples. List tiene estos constructores: List( ) List(int numRows) List(int numRows,boolean multipleselect)

La primera versin crea un control List que permite que haya slo un elemento sel formato, el valor de numRows especifica el nmero de entradas que en la lista estar cuando sea necesario desplazandose por la ventana). En el tercer formato, si mu seleccionar dos o mas elementos a la vez. Si es false, solo se puede seleccionar un lista, hay que llamar al mtodo add( ), que tiene estos dos formatos: void add(String name) void add(String name,int index) Aade los elementos al final de la lista Aade los elementos en la posicin especificada

Las listas empiezan a partir de la posicin cero y se puede especificar -1 para que se an Para determinar el elemento seleccionado se puede llamar a los siguientes mtodos unico elemento: String getSelectedItem( ) int getSelectedIndex( )

Para determinar el elemento seleccionado se puede llamar a los siguientes mtodos sol elementos: String [ ] getSelectedItems( )

int [ ] getSelectedIndexes( ) int getSelectedCount( ) devuelve el nmero de elementos en la lista void select(String name) para indicar el elemento que debe estar seleccionado. void select(int index) String getItem(int index) para obtener el nombre de un elemento de una posicin.

Evento generado es un ActionEvent. (Interfaz ActionListener y metodo actionPerforme elemento de la lista.

Evento generado es ItemEvent. (Interfaz ItemListener y mtodo itemStateChanged) cu elemento.

Barras de desplazamiento.

Las barras de desplazamiento se utilizan para seleccionar valores continuos entre m barras de desplazamiento pueden ser horizontales y verticales. Una barra de desplazam Scrollbar encapsula las barras de desplazamiento y define los siguientes constructores: Scrollbar( ) Scrollbar(int style) Scrollbar(int style, int initialvalue,int tamao, int min,int max);

El primer formato crea una barra de desplazamiento vertical, los siguientes formatos pe barra (Scrollbar.VERTICAL, Scrollbar.HORIZONTAL) int initialvalue valor inicial de la barra int tamao int min int max tamao de la barra valor minimo valor maximo

Para establecer los valores en caso de haber utilizado el primer constructor se usa: void setValues(int initialvalue,int tamao, int min,int max); Para obtener y poner el valor a la barra se usa: int getValue( ) void setValue(int valor) para obtener los valores minimos y maximo: int getMinimum( ) int getMaximum( )

Por defecto el incremento de la flecha es de 1 pero se puede cambiar mediante void s por defecto el incremento de pagina es de 10 y se pueden cambiar llamando a void setB

Evento generado es AdjustmentEvent. (Interfaz AdjustmentListener y mtodo getAdju ajuste.

TextField

La clase TextField implementa un rea de entrada de texto de una sola lnea que se lla texto permiten al usuario introducir strings y editar texto utilizando los cursores, las tec que se hacen con el raton. La clase TextField es una subclase de TextComponent constructores: TextField( ) TextField(int numchars ) TextField(String Str) TextField(String Str, int numchars) int numchars especifica la anchura en caracteres String str inicializa el campo por el texto especificado

Para obtener el texto del campo especificado se usa String getText( ) Para establecer el texto al campo se usa void setText(String texto) Se puede seleccionar parte del texto utilizando los siguientes mtodos: String getSelectedText( ) void select(int inicio,int final) Se puede poner editables y verificar si es editable o no con: void setEditable(boolean valor) boolean isEditable( )

Si no se desea ver el caracter que se esta presionando por ejemplo pasword se usa vo echoCharIsSet se puede verificar si el campo esta en el modo anterior y para ver q getEchoChar( ).

TextArea

Algunas veces no basta con una entrada de una sola linea para realizar ciertas tareas sencillo editor multilneas llamado TextArea y los constructores son los siguientes: TextArea( ) TextArea(int numlineas,int numcaracteres ) TextArea(String Str) TextArea(String str,int numlineas,int numcaracteres) TextArea(String str,int numlineas,int numcarcateres,int sBars)

Numlineas especifica la altura en lineas del rea de texto y numcaracteres especifica la se especifica con str y sBars especifica las barras de desplazamiento que va a tener y lo SCROLLBARS_BOTH

SCROLLBARS_HORIZONTAL_ONLY SCROLLBARS_NONE SCROLLBARS_VERTICAL_ONLY

Textarea es una subclase de TextComponent por lo que soporta los mismo metodos que void setText(String texto), String getSelectedText( ),

void select(int inicio,int final), void setEditable(boolean valor), boolean isEditable( )) y ad void append(String str) void insert(String str,int index) void replaceRange(String str,int startIndex,int endindex)

append aade el texto al fina del texto actual, insert pone el texto especificado en la po se usa replaceRange.

Barra de men y mens

Una ventana de nivel superior puede tener asociada una barra de men, que muestre superior. Cada opcin esta asociada a un men desplegable. Estas opciones se MenuItem. En general una barra de men tiene uno o ms objetos Men. Cada Menu MenuItem representa algo que el usuario quiere seleccionar. Debido a que Menu es crear una jerarqua de submenus anidados. Tambien se pueden incluir elementos seleccionar), que son opciones de men de la clase CheckboxMenuItem y aparece u seleccionan.

Para crear una barra de men, primero hay que crear una instancia de MenuBar. Es defecto. Despus, se crean instancias de Men que definan las selecciones que se mue Menu son las siguientes: Menu( )

Menu(String optionName) Menu(String optionName, boolean removable)

La optionName especifica el nombre de la seleccin de men. Si removable es true, el En caso contrario permanecera siempre a la barra de men. El primer constructor individuales del men son de la clase MenuItem. Esta clase define los siguientes constru MenuItem( ) MenuItem(String ItemName) MenuItem(String ItemName, MenuShortcut KeyAccel) ItemName es el nombre que se muestra en el men y KeyAccel es la tecla aceleradora Se puede habilitar e deshabilitar un elemento del men uilizando el mtodo setEnabled( void setEnabled(boolean enabledFlag)

Si enabledFlag es true el elemento del menu esta habilitado, en caso contrario, esta des Para determinar si un elemento esta habilitado o no, se utiliza el mtodo: boolean isEnabled( )

Para cambiar el nombre de un elemento del men se llama a setLabel( ) y para obtener void setLabel(String nuevoNombre) String getLabel( )

Se puede crear un elemento de men que se pueda chequear utilizando u CheckboxMenuItem y que tiene los siguientes constructores: CheckboxMenuItem( ) CheckboxMenuItem(String itemName) CheckboxMenuItem(String itemName,boolean on)

itemName es el nombre que se muestra en el menu, si on esta en true i

como selececionada, en caso contrario no. Se puede checar el estado de una opci puede activar utilizando void setState(boolean chk)

Ya que se crearon todos los elementos primero se agrega en menubar utilizando el mt

Una vez que se ha creado cada uno de los elementos del men hay que aadirlos a un el formato de la siguiente forma: MenuItem add(MenuItem item) Ya que se aadieron todos los elementos a un objeto de tipo men se aaden al objeto

Cada vez que se selecciona un elemento de men se genera un evento de tipo ActionE ItemEvent

El mtodo getItem( ) de ItemEvent devuelve la referencia al elemento que ha generado e Object getItem( )

FileDialog

Se puede utilizar un cuadro de dialogo para que el usuario pueda seleccionar un achiv archivo solo hay que crear un objeto de la clase FileDialog y tiene los siguientes constru FileDialog(Frame parent, String boxename); FileDialog(Frame parent, String boxename,int how); FileDialog(Frame parent);

Donde parent es el propietario del cuadro de dialogo de archivo, boxename es el nom de dialodo y how puede ser FileDialog.LOAD(El archivo se selecciona para lectura), Fil para escritura).

FileDialog tiene dos mtodos que permite determinar el nombre y la ruta del archivo y so String getDirectory( ) String getFile( )

Se muestra utilizando setVisible(true); Dialog

Se pueden crear cuadros de dialogo que permiten agrupar un conjunto de controles re utilizan principalmente para obtener entradas del usuario. Los cuadros de dialogo pued al cuadro hasta que se cierra) o no modal(se puede hacer otra cosa y despus interac son: Dialog(Frame parentWindow, boolean mode) Dialog(Frame parentWindow, String title, boolean mode)

parentWindow es el propietario del cuadro de dialogo, title es el titulo del cuadro de dia contrario no modal. dispose( ) esta definido por la clase Window y libera todos los recu de dialogo.