09.02.2013 Visualizaciones

tesis_uam/Para programadores/Manual completo de ... - Grupo CEDIP

tesis_uam/Para programadores/Manual completo de ... - Grupo CEDIP

tesis_uam/Para programadores/Manual completo de ... - Grupo CEDIP

SHOW MORE
SHOW LESS

¡Convierta sus PDFs en revista en línea y aumente sus ingresos!

Optimice sus revistas en línea para SEO, use backlinks potentes y contenido multimedia para aumentar su visibilidad y ventas.

INDICE<br />

Marco Teorico ------------------------------------------------------------------------------------------------------- 4<br />

Introducción a Java ------------------------------------------------------------------------------------------------- 6<br />

Orígenes <strong>de</strong> Java ---------------------------------------------------------------------------------------------------- 7<br />

Características <strong>de</strong> Java --------------------------------------------------------------------------------------------- 9<br />

Características principales <strong>de</strong> Java ------------------------------------------------------------------------------- 9<br />

Api’ s <strong>de</strong> la Plataforma Java --------------------------------------------------------------------------------------- 12<br />

Packages <strong>de</strong> Java --------------------------------------------------------------------------------------------------- 13<br />

PARTE I : Package Java.applet ------------------------------------------------------------------------------- 14<br />

Clase Applet ------------------------------------------------------------------------------------------------ 14<br />

Interface Applet.context ----------------------------------------------------------------------------------- 18<br />

Interface Applet.stub --------------------------------------------------------------------------------------- 19<br />

Interface Audio.Clip ---------------------------------------------------------------------------------------- 19<br />

PARTE II: Package Java.awt ----------------------------------------------------------------------------------- 19<br />

Clase Java.AWTEvent ------------------------------------------------------------------------------------- 21<br />

Clase Java.AWTEvent.Multicaster ---------------------------------------------------------------------- 22<br />

Clase Java.awt.Adjustable -------------------------------------------------------------------------------- 23<br />

Clase Java.awt.Bor<strong>de</strong>rLayout ----------------------------------------------------------------------------- 24<br />

Clase Java.awt.Button ------------------------------------------------------------------------------------- 25<br />

Clase Java.awt.Canvas ------------------------------------------------------------------------------------- 25<br />

Clase Java.awt.CardLayout ------------------------------------------------------------------------------- 26<br />

Clase Java.awt.Checkbox ---------------------------------------------------------------------------------- 26<br />

Clase Java.awt.CheckboxGroup -------------------------------------------------------------------------- 27<br />

Clase Java.awt.CheckboxMenuItem --------------------------------------------------------------------- 27<br />

Clase Java.awt.Choice ------------------------------------------------------------------------------------- 28<br />

Clase Java.awt.Color --------------------------------------------------------------------------------------- 29<br />

Clase Java.awt.Component -------------------------------------------------------------------------------- 30<br />

Clase Java.awt.Container ---------------------------------------------------------------------------------- 33<br />

Clase Java.awt.Cursos ------------------------------------------------------------------------------------- 35<br />

Clase Java.awt.Dialog -------------------------------------------------------------------------------------- 35<br />

Clase Java.awt.Dimension --------------------------------------------------------------------------------- 36<br />

Clase Java.awt.Event --------------------------------------------------------------------------------------- 36<br />

Clase Java.awt.EventDispatchThread -------------------------------------------------------------------- 38<br />

Clase Java.awt.EventQueue ------------------------------------------------------------------------------- 39<br />

Clase Java.awt.FileDialog --------------------------------------------------------------------------------- 39<br />

Clase Java.awt.FlowLayout -------------------------------------------------------------------------------- 39<br />

Clase Java.awt.Font ---------------------------------------------------------------------------------------- 40<br />

Clase Java.awt.FontMetrics ------------------------------------------------------------------------------- 41<br />

Clase Java.awt.Freme -------------------------------------------------------------------------------------- 41<br />

Clase Java.awt.Graphics ----------------------------------------------------------------------------------- 42<br />

Clase Java.awt.GridBagConstraints ---------------------------------------------------------------------- 44<br />

Clase Java.awt.GridBagLayoutInfo ---------------------------------------------------------------------- 44<br />

Clase Java.awt.GridBagLayout --------------------------------------------------------------------------- 45<br />

1


Clase Java.awt.GridLayout -------------------------------------------------------------------------------- 46<br />

Clase Java.awt.Image --------------------------------------------------------------------------------------- 46<br />

Clase Java.awt.Insets -------------------------------------------------------------------------------------- 47<br />

Clase Java.awt.ItemSelectable ---------------------------------------------------------------------------- 47<br />

Clase Java.awt.Labe ---------------------------------------------------------------------------------------- 47<br />

Clase Java.awt.LayoutManage ---------------------------------------------------------------------------- 48<br />

Clase Java.awt.LayoutManager2 ------------------------------------------------------------------------- 48<br />

Clase Java.awt.List ----------------------------------------------------------------------------------------- 48<br />

Clase Java.awt.MediaTracker ----------------------------------------------------------------------------- 50<br />

Clase Java.awt.Menu --------------------------------------------------------------------------------------- 51<br />

Clase Java.awt.MenuBar ---------------------------------------------------------------------------------- 51<br />

Clase Java.awt.MenuComponent ------------------------------------------------------------------------- 52<br />

Clase Java.awt.MenuContainer --------------------------------------------------------------------------- 52<br />

Clase Java.awt.MenuItem --------------------------------------------------------------------------------- 53<br />

Clase Java.awt.MenuShortcut ----------------------------------------------------------------------------- 53<br />

Clase Java.awt.Panel --------------------------------------------------------------------------------------- 54<br />

Clase Java.awt.Point --------------------------------------------------------------------------------------- 54<br />

Clase Java.awt.Polygon ------------------------------------------------------------------------------------ 54<br />

Clase Java.awt.PopupMenu ------------------------------------------------------------------------------- 55<br />

Clase Java.awt.PrintGraphics ----------------------------------------------------------------------------- 55<br />

Clase Java.awt.PrintJob ------------------------------------------------------------------------------------ 55<br />

Clase Java.awt.Rectangle ---------------------------------------------------------------------------------- 56<br />

Clase Java.awt.ScrollPane --------------------------------------------------------------------------------- 56<br />

Clase Java.awt.Scrollbar ----------------------------------------------------------------------------------- 57<br />

Clase Java.awt.Shape -------------------------------------------------------------------------------------- 58<br />

Clase Java.awt.SystemColor ------------------------------------------------------------------------------ 58<br />

Clase Java.awt.TextArea ---------------------------------------------------------------------------------- 60<br />

Clase Java.awt.TextComponent -------------------------------------------------------------------------- 60<br />

Clase Java.awt.TextComponet ---------------------------------------------------------------------------- 61<br />

Clase Java.awt.TextField ---------------------------------------------------------------------------------- 61<br />

Clase Java.awt.Toolkit -------------------------------------------------------------------------------------- 62<br />

Clase Java.awt.Window ------------------------------------------------------------------------------------- 63<br />

PARTE III: Package Java.awt.event ---------------------------------------------------------------------------- 64<br />

Clase Java.awt.event.ActionEvent ------------------------------------------------------------------------ 65<br />

Clase Java.awt.event.ActionListener --------------------------------------------------------------------- 65<br />

Clase Java.awt.event.AdjustmentEvent ------------------------------------------------------------------ 65<br />

Clase Java.awt.event.AdjustmentListener --------------------------------------------------------------- 66<br />

Clase Java.awt.event.componentAdapter ---------------------------------------------------------------- 66<br />

Clase Java.awt.event.ComponentEvent ------------------------------------------------------------------ 66<br />

Clase Java.awt.event.ComponenentListener ------------------------------------------------------------ 67<br />

Clase Java.awt.event.ContainerAdapter ----------------------------------------------------------------- 67<br />

Clase Java.awt.event.ContainerEvent -------------------------------------------------------------------- 67<br />

Clase Java.awt.event.ContainerListener ----------------------------------------------------------------- 68<br />

Clase Java.awt.event.FocusAdapter ---------------------------------------------------------------------- 68<br />

Clase Java.awt.event.FocusEvent ------------------------------------------------------------------------- 68<br />

Clase Java.awt.event.FocusListener ---------------------------------------------------------------------- 68<br />

2


Clase Java.awt.event.InputEvent ------------------------------------------------------------------------- 69<br />

Clase Java.awt.event.ItemEvent -------------------------------------------------------------------------- 69<br />

Clase Java.awt.event.ItemListener ----------------------------------------------------------------------- 70<br />

Clase Java.awt.event.KeyAdapter ------------------------------------------------------------------------ 70<br />

Clase Java.awt.event.KeyEvent --------------------------------------------------------------------------- 70<br />

Clase Java.awt.event.KeyListener ------------------------------------------------------------------------ 73<br />

Clase Java.awt.event.MouseAdapter --------------------------------------------------------------------- 73<br />

Clase Java.awt.event.MouseEvent ----------------------------------------------------------------------- 73<br />

Clase Java.awt.event.MouseListener --------------------------------------------------------------------- 74<br />

Clase Java.awt.event.MouseMotionAdapter ------------------------------------------------------------ 74<br />

Clase Java.awt.event.MouseMotionListener ------------------------------------------------------------ 74<br />

Clase Java.awt.event.PointEvent ------------------------------------------------------------------------- 75<br />

Clase Java.awt.event.TextEvent -------------------------------------------------------------------------- 75<br />

Clase Java.awt.event.TextListener ----------------------------------------------------------------------- 75<br />

Clase Java.awt.event.WindowAdapter ------------------------------------------------------------------- 75<br />

Clase Java.awt.event.WindowEvent --------------------------------------------------------------------- 76<br />

Clase Java.awt.event.WindowListener ------------------------------------------------------------------ 76<br />

PARTE IV: Clase Java.awt.Image. ------------------------------------------------------------------------------- 77<br />

Clase Java.awt.Image.AreaAveragingScaleFilter ------------------------------------------------------ 77<br />

Clase Java.awt.Image.ColorMo<strong>de</strong>l ----------------------------------------------------------------------- 78<br />

Clase Java.awt.Image.CropImageFilter ------------------------------------------------------------------ 78<br />

Clase Java.awt.Image.DirectColorMo<strong>de</strong>l ---------------------------------------------------------------- 78<br />

Clase Java.awt.Image.FilteredImageSource ------------------------------------------------------------ 79<br />

Clase Java.awt.Image.ImageConsumer ------------------------------------------------------------------ 79<br />

Clase Java.awt.Image.ImageFilter ------------------------------------------------------------------------ 80<br />

Clase Java.awt.Image.ImageObserver ------------------------------------------------------------------- 80<br />

Clase Java.awt.Image.Producer --------------------------------------------------------------------------- 80<br />

Clase Java.awt.Image.In<strong>de</strong>xColorMo<strong>de</strong>l ---------------------------------------------------------------- 81<br />

Clase Java.awt.Image.MemoryImageSource ----------------------------------------------------------- 81<br />

Clase Java.awt.Image.PixelGrabber ---------------------------------------------------------------------- 82<br />

Clase Java.awt.Image.RGBImageFilter ----------------------------------------------------------------- 83<br />

Clase Java.awt.Image.ReplicateScaleFilter ------------------------------------------------------------- 83<br />

3


MARCO TEORIICO<br />

Este trabajo va dirigido a todos aquellos que intentan entrar al mundo java, que han oído o leído cosas que<br />

no saben a ciencia cierta que es eso <strong>de</strong> java.<br />

Java es una palabra que actualmente esta en boca <strong>de</strong> todos y ha creado una autentica revolución. La verdad<br />

es que no es para tanto. Java es una gran i<strong>de</strong>a, pero no escandalosamente genial. Quizá todo se haya visto<br />

magnificado por Internet pero java se anuncia como un lenguaje <strong>completo</strong> <strong>de</strong> propósito general y, bueno, hay<br />

ciertas porciones <strong>de</strong>l mismo que no están <strong>de</strong>finidas o son discutibles, y algunas características son ciertamente<br />

obscuras. A lo largo <strong>de</strong>l <strong>de</strong>sarrollo <strong>de</strong>l tutorial – ayuda el lector podrá ir observando todas esas cosas.<br />

A finales 1999, Sun Microsystems presento su nueva estrategia en torno a la plataforma Java2, que se resume en la<br />

diversificación <strong>de</strong> Java en tres gran<strong>de</strong>s ramas, atendiendo al mercado a que va dirigido: gran<strong>de</strong>s or<strong>de</strong>nadores,<br />

or<strong>de</strong>nadores <strong>de</strong> sobremesa y microor<strong>de</strong>nadores o dispositivos <strong>de</strong> memoria limitada, fruto <strong>de</strong> esta <strong>de</strong>claración <strong>de</strong><br />

intenciones, a lo largo <strong>de</strong> estos años han ido surgiendo las versiones <strong>de</strong> java que se adaptan a esta nueva estrategia<br />

<strong>de</strong> Sun, así es posible encontrar los siguientes productos <strong>de</strong> la plataforma Java2:<br />

Enterprise Edition (J2EE), Standard Edition (J2SE) y Micro Edition (J2ME).<br />

Java2 EE: Es la plataforma <strong>de</strong> <strong>de</strong>sarrollo <strong>de</strong> aplicaciones para servidores utilizados en un entorno empresarial.<br />

Incluye Enterprice Java Beans (EJB), JavaServerPages (JSP), Servlets, JDBC, JNDI y especificaciones para<br />

interactuar con sistemas <strong>de</strong> administración ya implementados en empresas.<br />

Java2 SE: Es la plataforma <strong>de</strong> <strong>de</strong>sarrollo <strong>de</strong> aplicaciones en clientes, fundamentalmente orientadas a or<strong>de</strong>nadores<br />

<strong>de</strong> sobremesa o pequeños grupos <strong>de</strong> servidores. Incluye el API básico <strong>de</strong> java con applets, red RMI, Servlets,<br />

JDBC, Swing, AWT, JFC 2D, Java Media (Java 3D, Java Sound, JAI, JMF), Java Beans (no Enterprice <strong>de</strong> Java<br />

Beans) y algunos mas.<br />

Java2 ME: Es la plataforma <strong>de</strong> <strong>de</strong>sarrollo <strong>de</strong> aplicaciones en dispositivos <strong>de</strong> capacida<strong>de</strong>s limitadas, por ejemplo<br />

teléfonos móviles, Asistentes digitales Personales (PDA), dispositivos WAP, sistemas <strong>de</strong> navegación para coches,<br />

etc.<br />

La mayoría <strong>de</strong> los <strong>programadores</strong> están interesados en la versión J2SE, porque es la que ofrece todas las ventajas<br />

<strong>de</strong> la plataforma Java2, sin los inconvenientes <strong>de</strong> dificultad (y alto coste) que suelen acompañar a todo lo que se<br />

<strong>de</strong>sarrolla para un entorno empresarial. La versión <strong>de</strong>l JDK que es tema <strong>de</strong> estudio en este trabajo es la versión 1.4<br />

y fue la primera que vio la luz realmente adaptada a esta nueva estrategia <strong>de</strong> Sun. El lector no <strong>de</strong>be esperar que<br />

este trabajo le proporcione ungüentos milagrosos que por arte <strong>de</strong> magia traspasen el conocimiento el conocimiento.<br />

El estudio <strong>de</strong> Java y sus applets a través <strong>de</strong> este tutorial, no será sino el examen <strong>de</strong> una particular forma <strong>de</strong> ver las<br />

cosas, con un poco <strong>de</strong> estructuración en la presentación y un cierto trasfondo <strong>de</strong> Internet; el resto es como siempre,<br />

tarea <strong>de</strong>l programador. Es <strong>de</strong>cir, uno pue<strong>de</strong> apren<strong>de</strong>r a construir un applet, o bien <strong>de</strong>jar que alguna <strong>de</strong> las<br />

herramientas lo construya automáticamente, igual que pue<strong>de</strong> enseñarse a codificar un dialogo en un entorno<br />

grafico, pero... la inteligencia <strong>de</strong> esa pieza siempre <strong>de</strong>pen<strong>de</strong>rá <strong>de</strong> la habilidad y experiencia <strong>de</strong>l programador<br />

respecto al lenguaje usado y sus recursos. En fin un buen applet será únicamente resultado <strong>de</strong>l trabajo <strong>de</strong> un buen<br />

programador Java.<br />

4


Las principales interrogantes acerca <strong>de</strong>l presente trabajo:<br />

1.- ¿Porque habiendo suficiente información en fuentes impresas y en Internet, a<strong>de</strong>más <strong>de</strong> la documentación<br />

<strong>de</strong>l API proporcionado por Sun Microsystems se <strong>de</strong>cidió realizar este tutorial - sistema <strong>de</strong> ayuda.?<br />

2.- ¿Que ofrece este trabajo que no puedan ofrecer las fuentes antes mencionadas?<br />

En principio la creación <strong>de</strong> este sistema <strong>de</strong> ayuda - tutorial ha partido <strong>de</strong> la necesidad <strong>de</strong>l aprendizaje <strong>de</strong>l<br />

lenguaje java.<br />

Lo que encontraras en este trabajo:<br />

• Un sistema <strong>de</strong> ayuda que te permitirá navegar a través <strong>de</strong> paginas web que contienen imágenes con<br />

hipervínculos o mapas <strong>de</strong> navegación don<strong>de</strong> podrás ir conociendo los packages sus clases e interfaces con<br />

las que cuenta el API y una <strong>de</strong>scripción pertinente <strong>de</strong>l mismo, estos mapas son la representación grafica <strong>de</strong><br />

la jerarquía <strong>de</strong> herencia <strong>de</strong> clases e interfaces <strong>de</strong> java en el pakage en el que te encuentres; La pagina<br />

principal inicia mostrando todos los packages con los que cuenta el API <strong>de</strong> Java; Se navega haciendo clic<br />

con el ratón sobre el nombre <strong>de</strong>l package en principio, lo cual te lleva a otra pagina que contiene otro mapa<br />

que muestra la jerarquía <strong>de</strong> herencia <strong>de</strong> las clases y las interfaces contenidas en el, luego pue<strong>de</strong>s clicar<br />

nuevamente sobre el nombre <strong>de</strong> una clase o interfase, esta acción te lleva a la <strong>de</strong>finición <strong>de</strong> la clase don<strong>de</strong> te<br />

muestra todas las variables y métodos con las que cuenta esta, todos los métodos son hipervínculos don<strong>de</strong><br />

finalmente pue<strong>de</strong>s clicar cobre la <strong>de</strong>finición <strong>de</strong> este método para ver un ejemplo <strong>de</strong> uso, así como la sintaxis<br />

y una <strong>de</strong>scripción apropiada <strong>de</strong>l mismo.<br />

• El principal objetivo <strong>de</strong> este trabajo es mostrar ejemplos concretos <strong>de</strong> las variable y métodos contenidos en<br />

cada una <strong>de</strong> las clases que conforman el API <strong>de</strong> Java, así como su sintaxis <strong>de</strong> uso, el trabajo se avanzo hasta<br />

don<strong>de</strong> el tiempo lo permitió, por lo tanto no esta completamente terminado <strong>de</strong>bido a que Java cuenta con<br />

una gran cantidad <strong>de</strong> packages y cada package contiene una gran cantidad <strong>de</strong> clases e interfaces, y estos a<br />

su vez cuentan con una cantidad consi<strong>de</strong>rable <strong>de</strong> métodos, la <strong>de</strong>scripción <strong>de</strong> todos los métodos esta fuera<br />

<strong>de</strong>l alcance <strong>de</strong> esta primera versión <strong>de</strong> este trabajo, por lo que queda abierta la posibilidad <strong>de</strong> que alguien<br />

mas pueda continuar con este maratónico trabajo en su primero o segundo proyecto terminal. En lo personal<br />

consi<strong>de</strong>ro que este trabajo seria <strong>de</strong> gran utilidad para aquellos quienes aun están el proceso <strong>de</strong> iniciación<br />

<strong>de</strong>l lenguaje Java, a<strong>de</strong>más se plantea la posibilidad <strong>de</strong> que entre todos creemos un acervo propio <strong>de</strong> nuestra<br />

comunidad universitaria como muchas otras ya lo han estado haciendo <strong>de</strong>s<strong>de</strong> hace tiempo.<br />

Evi<strong>de</strong>ntemente po<strong>de</strong>mos encontrar una basta cantidad <strong>de</strong> ayuda en Internet pero la fuente <strong>de</strong> esta información es<br />

muy escueta y <strong>de</strong> dudosa proce<strong>de</strong>ncia, salvo algunos sitios que son bastante <strong>completo</strong>s y <strong>de</strong> buena fuente, al final<br />

<strong>de</strong> este trabajo se muestra un apéndice en el que se pue<strong>de</strong>n consultar algunos sitios confiables y <strong>completo</strong>s en<br />

Internet.<br />

Pero con el inconveniente <strong>de</strong> es muy difícil encontrar ejemplos concretos <strong>de</strong>l uso <strong>de</strong> los métodos <strong>de</strong> alguna clase en<br />

particular; En este trabajo se preten<strong>de</strong> mostrar ejemplos <strong>de</strong> uso <strong>de</strong> todos los métodos <strong>de</strong> todas las clases e<br />

interfaces <strong>de</strong> todos los packages, cuando este completamente terminado. Debido a que como todos los lenguajes <strong>de</strong><br />

programación van evolucionando en el transcurso <strong>de</strong>l tiempo <strong>de</strong>l mismo modo es <strong>de</strong> esperarse que Java<br />

evolucione, que crezca en cuanto al numero <strong>de</strong> packages, se agreguen nuevas clases a los packages, nuevos<br />

métodos a las clases, este trabajo requerirá <strong>de</strong> mantenimiento en su actualización, esta pues hecha la invitación a la<br />

5


comunidad para participar en el presente ya que será <strong>de</strong> gran utilidad para todos aquellos quienes nos <strong>de</strong>dicamos a<br />

la programación en Java<br />

INTRODUCCIÓN<br />

IINTODUCCIION A JJAVA<br />

El uso principal que se hace <strong>de</strong> Internet e incluso <strong>de</strong> las re<strong>de</strong>s internas (corporativas) es el correo electrónico<br />

(e-mail), aunque actualmente hay un auge sorpren<strong>de</strong>nte <strong>de</strong> la navegación web. Los documentos web pue<strong>de</strong>n<br />

contener una gran variedad <strong>de</strong> texto y gráficos <strong>de</strong> todas clases, así como proporcionar enlaces hipertexto hacia<br />

cualquier lugar <strong>de</strong> la red. Los navegadores utilizan documentos escritos en lenguajes HTML. La combinación <strong>de</strong><br />

navegadores HTML / WWW esta limitada, pues, a texto y gráficos. Si se quiere reproducir sonido o ejecutar un<br />

programa <strong>de</strong> <strong>de</strong>mostración, primero hay que <strong>de</strong>scargar el fichero en cuestión y luego utilizar un programa en el<br />

or<strong>de</strong>nador propio capaz <strong>de</strong> enten<strong>de</strong>r el formato <strong>de</strong> ese fichero que se ha <strong>de</strong>scargado.<br />

Hasta ahora la única forma <strong>de</strong> realizar una pagina web con contenido interactivo era mediante la interfaz<br />

CGI (Common Gateway Interfase), que permite pasar parámetros entre formularios <strong>de</strong>finidos en lenguaje HTML y<br />

programas escritos en Perl o en C. Esta interfaz resulta muy incomoda <strong>de</strong> programar y es pobre en sus<br />

posibilida<strong>de</strong>s.<br />

El lenguaje Java y los navegadores con soporte Java proporcionan una forma diferente <strong>de</strong> hacer que ese<br />

navegador sea capaz <strong>de</strong> ejecutar programas. Con Java se pue<strong>de</strong> producir sonido directamente <strong>de</strong>s<strong>de</strong> el navegador,<br />

se pue<strong>de</strong>n visitar home pages con animaciones, se pue<strong>de</strong> enseñar al navegador a manejar nuevos formatos <strong>de</strong><br />

ficheros, e incluso, cuando se pueda transmitir vi<strong>de</strong>o por líneas telefónicas, el navegador ya estará preparado para<br />

mostrar esas imágenes.<br />

Utilizando Java se pue<strong>de</strong>n eliminar los inconvenientes <strong>de</strong> la interfaz CGI así como añadir aplicaciones que<br />

vayan <strong>de</strong>s<strong>de</strong> experimentos científicos interactivos <strong>de</strong> propósito educativo a juegos o aplicaciones especializadas<br />

para la tele venta. Es posible implementar publicidad interactiva y periódicos personalizados. Por ejemplo, alguien<br />

podría escribir un programa Java que implementara una simulación Química interactiva –Una ca<strong>de</strong>na <strong>de</strong> ADN-.<br />

Utilizando un navegador con soporte Java, un usuario podría recibir fácilmente esa simulación e interaccionar con<br />

ella en lugar <strong>de</strong> conseguir simplemente un dibujo estático y algo <strong>de</strong> texto. Lo recibido cobra vida. A<strong>de</strong>más, con<br />

Java el usuario pue<strong>de</strong> estar seguro <strong>de</strong> que el código que hace funcionar el experimento químico no contiene ningún<br />

trozo <strong>de</strong> código malicioso que dañe al sistema. El código que intente actuar <strong>de</strong>structivamente o que contenga<br />

errores, no podrá traspasar los muros <strong>de</strong>fensivos colocados por las características <strong>de</strong> seguridad y robustez <strong>de</strong> Java.<br />

Java proporciona una nueva forma <strong>de</strong> acce<strong>de</strong>r a las aplicaciones. El software viaja transparentemente a<br />

través <strong>de</strong> la red. No hay necesidad <strong>de</strong> instalar las aplicaciones, ellas mismas vienen cuando se les necesita. Por<br />

ejemplo, la mayoría <strong>de</strong> los navegadores <strong>de</strong>l web pue<strong>de</strong>n procesar un reducido número <strong>de</strong> formatos gráficos<br />

(generalmente GIF y JPEG). Si se encuentra con otro tipo <strong>de</strong> formato, el navegador estándar no tiene capacidad <strong>de</strong><br />

procesarlo, tendría que ser actualizado para aprovechar las ventajas <strong>de</strong>l nuevo formato. Sin embargo, un navegador<br />

con soporte Java se pue<strong>de</strong> enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y<br />

mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo <strong>de</strong> compresión para imágenes, el inventor<br />

solo necesita estar seguro <strong>de</strong> que hay una copia en código Java <strong>de</strong> ese algoritmo instalada en el en el servidor que<br />

contiene las imágenes que quiere publicar. Es <strong>de</strong>cir, los navegadores con soporte Java se actualizan así mismos<br />

sobre la marcha, cuando encuentran un nuevo tipo <strong>de</strong> fichero o algoritmo.<br />

En Java esta la filosofía en la que se basar los NC (Network Computer), que serán or<strong>de</strong>nadores sin disco y<br />

con mucha memoria. Sus programas resi<strong>de</strong>n en un servidor que los envía cuando se les solicita. Es quizá un guiño<br />

6


al pasado y una versión futurista <strong>de</strong> lo que ha sido una Terminal-X en otros tiempos, salvando las diferencias,<br />

evi<strong>de</strong>ntemente (no sea que alguien til<strong>de</strong> el presente <strong>de</strong> irreverente con las nuevas tecnologías).<br />

Java es el primer lenguaje que tiene la virtud <strong>de</strong> ser compilado e interpretado <strong>de</strong> forma simultanea. Cuando<br />

un programador realiza una aplicación o un applet en Java y lo compila, en realidad, el compilador no trabaja como<br />

un compilador <strong>de</strong> un lenguaje al uso. El compilador Java únicamente genera el <strong>de</strong>nominado BiteCo<strong>de</strong>. Este código<br />

es un código intermedio entre el lenguaje maquina <strong>de</strong>l preprocesador y Java. Evi<strong>de</strong>ntemente este código no es<br />

ejecutable por si mismo en ninguna plataforma hardware, pues no se correspon<strong>de</strong> con el lenguaje <strong>de</strong> ninguno <strong>de</strong> los<br />

procesadores que actualmente se conocen (habrá que esperar a ver que ocurre con los procesadores Java). Por lo<br />

tanto, para ejecutar una aplicación Java es necesario disponer <strong>de</strong> un mecanismo que permita ejecutar el BiteCo<strong>de</strong>.<br />

Este mecanismo es la <strong>de</strong>nominada Maquina Virtual Java (JVM). En cada plataforma (Solaris, Linux, Windows<br />

95/98/NT, HP-UX, MacOS, etc.) existe una maquina virtual, esta lo interpreta pasándolo a código maquinadle<br />

procesador don<strong>de</strong> se este trabajando, así como ejecutando las instrucciones en lenguaje maquina que se <strong>de</strong>riven <strong>de</strong><br />

la aplicación Java. De este modo cuando el mismo BiteCo<strong>de</strong> llega a diferentes plataformas existirá la maquina<br />

virtual a<strong>de</strong>cuada. Con este mecanismo se consigue la famosa multiplataforma <strong>de</strong> Java, en la que solo con codificar<br />

una vez, po<strong>de</strong>mos ejecutar en varias plataformas.<br />

En realidad la maquina virtual <strong>de</strong> Java (JVM) <strong>de</strong>sempeña otras funciones, como la <strong>de</strong> aislar los programas<br />

Java al entorno <strong>de</strong> la JVM, consiguiendo una gran seguridad.<br />

Sin embargo, como padras estar <strong>de</strong>duciendo, esto tiene algunas <strong>de</strong>sventajas, y la mas clara es la velocidad <strong>de</strong><br />

ejecución. Puesto que la VJM <strong>de</strong>be estar interpretando constantemente el ByteCo<strong>de</strong>, se consume <strong>de</strong>masiado tiempo<br />

en realizar esta interpretación, que por otra parte no aporta nada a la aplicación, obteniendo así un bajo rendimiento<br />

<strong>Para</strong> solucionarlo se han optado soluciones intermedias. Una <strong>de</strong> las mas novedosas son los compiladores JIT (Just<br />

in Time). Estos compiladores están situado en la entrada <strong>de</strong> la JVM, <strong>de</strong> modo que según llega el ByteCo<strong>de</strong> lo van<br />

compilando al lenguaje maquina <strong>de</strong>l procesador. A diferencia <strong>de</strong> la interpretación, el compilador no ejecuta el<br />

ByteCo<strong>de</strong>, únicamente lo traduce y lo almacena en código nativo <strong>de</strong>ntro <strong>de</strong> la JVM, Así, una vez que la aplicación<br />

esta <strong>de</strong>ntro <strong>de</strong> la JVM, ya se encuentra en lenguaje maquina y, por lo tanto, será directamente ejecutable, sin<br />

necesidad <strong>de</strong> interpretaciones, consiguiendo dotar <strong>de</strong> mayores rendimientos a la aplicación.<br />

Muy brevemente y <strong>de</strong> forma muy genérica, este es el funcionamiento básico <strong>de</strong> Java. Todas las mejoras al<br />

lenguaje se centran básicamente en conseguir mejores tiempos <strong>de</strong> ejecución y dotar <strong>de</strong> mayores prestaciones a la<br />

Maquina Virtual Java.<br />

ORIGENES DE JAVA<br />

Sun Microsystems, lí<strong>de</strong>r en servidores para Internet, uno <strong>de</strong> cuyos lemas <strong>de</strong>s<strong>de</strong> hace mucho tiempo ha sido<br />

“the network is the computer” (el verda<strong>de</strong>ro or<strong>de</strong>nador es la red en su conjunto y no cada maquina individual), es<br />

quien ha inventado el lenguaje Java, en un intento <strong>de</strong> resolver todos los problemas que se planteaba a los<br />

<strong>de</strong>sarrolladores <strong>de</strong> software por la proliferación <strong>de</strong> arquitecturas incompatibles, tanto entre las diferentes maquinas<br />

como entre los diversos sistemas operativos y sistemas <strong>de</strong> ventanas que funcionan sobre una misma maquina,<br />

añadiendo la dificultad <strong>de</strong> crear aplicaciones distribuidas en una red como Internet.<br />

Se han podido leer mas <strong>de</strong> cinco versiones distintas sobre el origen, concepción y <strong>de</strong>sarrollo <strong>de</strong> Java, <strong>de</strong>s<strong>de</strong><br />

la que dice que este fue un proyecto que reboto durante mucho tiempo por distintos <strong>de</strong>partamentos <strong>de</strong> Sun sin que<br />

nadie le prestara atención, hasta que finalmente encontró su nicho <strong>de</strong> mercado en la Al<strong>de</strong>a global que es Internet;<br />

hasta la mas difundida, que justifica a Java como el lenguaje <strong>de</strong> pequeños electrodomésticos.<br />

7


Hace algunos años Sun Microsystems <strong>de</strong>cidió introducirse en el mercado <strong>de</strong> la electrónica <strong>de</strong> consumo y<br />

<strong>de</strong>sarrollar programas para pequeños dispositivos electrónicos. Tras unos comienzos dudosos, Sun <strong>de</strong>cidió crear<br />

una filial, <strong>de</strong>nominada, First Person Inc. <strong>Para</strong> dar margen <strong>de</strong> maniobra al equipo responsable <strong>de</strong>l proyecto.<br />

El mercado inicialmente previsto para los programas <strong>de</strong> First Person eran los equipos domésticos:<br />

microondas, tostadoras y, fundamentalmente, televisión interactiva. Este mercado, dada la falta <strong>de</strong> sofisticación <strong>de</strong><br />

los usuarios, requería unas interfaces mucho mas cómodas e intuitivas que los sistemas <strong>de</strong> ventanas que<br />

proliferaban en el memento.<br />

Otros requisitos importantes eran la fiabilidad <strong>de</strong>l código y la fiabilidad <strong>de</strong> <strong>de</strong>sarrollo. James Gosling, el<br />

miembro con mas experiencia en lenguajes <strong>de</strong> programación. Decidió que las ventajas <strong>de</strong> eficiencia <strong>de</strong> C++ no<br />

compensaba el gran coste <strong>de</strong> pruebas y <strong>de</strong>puración. Gosling había estado trabajando en su tiempo libre en un<br />

lenguaje <strong>de</strong> programación que el había llamado Oak, según parece el nombre se <strong>de</strong>be al viejo roble que veía por la<br />

ventana <strong>de</strong> su casa, el cual aun partiendo <strong>de</strong> la sintaxis <strong>de</strong> C++, intentaba remediar las <strong>de</strong>ficiencias que había<br />

observado.<br />

Los lenguajes al uso, como C o C++, <strong>de</strong>ben ser compilados para un chip, y si se cambia el chip, todo el<br />

software <strong>de</strong>be compilarse <strong>de</strong> nuevo. Esto encarece mucho los <strong>de</strong>sarrollos y el problema es especialmente causado<br />

por en el campo <strong>de</strong> la electrónica <strong>de</strong> consumo. La aparición <strong>de</strong> un chip mas barato y, generalmente más eficiente,<br />

conduce a los fabricantes a incluirlo en las nuevas series <strong>de</strong> sus ca<strong>de</strong>nas <strong>de</strong> producción, por pequeña que sea la<br />

diferencia en precio, ya que, multiplicada por la tirada masiva <strong>de</strong> los aparatos, supone un ahorro consi<strong>de</strong>rable. Por<br />

tanto, Gosling <strong>de</strong>cidió mejorar las características <strong>de</strong> Oak y utilizarlo.<br />

El primer proyecto en que se utilizo este lenguaje recibió el nombre <strong>de</strong> proyecto Geen y consistía en un<br />

sistema <strong>de</strong> control <strong>de</strong> los aparatos y el entorno <strong>de</strong> su hogar. <strong>Para</strong> ello se construyo un or<strong>de</strong>nador experimental<br />

<strong>de</strong>nominado *7 (Star Seven). El sistema presentaba una interfaz basada en la representación <strong>de</strong> la casa <strong>de</strong> forma<br />

animada y el control se llevaba a cabo mediante una pantalla sensible al tacto. En el sistema aparecía Duke, la<br />

actual mascota <strong>de</strong> Java. Posteriormente se aplico a otro proyecto <strong>de</strong>nominado VOD (vi<strong>de</strong>o on Demand) en el que<br />

se empleaba para interfaz para televisión interactiva. Ninguno <strong>de</strong> estos proyectos se convirtió nunca en un sistema<br />

comercial, pero fueron <strong>de</strong>sarrollados enteramente un Java primitivo y fueron como su bautismo <strong>de</strong> fuego.<br />

Una vez que Sun se dieron cuenta que a corto plazo la televisión interactiva no iba a ser un gran éxito,<br />

urgieron a First Person a <strong>de</strong>sarrollar con rapi<strong>de</strong>z nuevas estrategias que produjeran beneficios. No lo consiguieron<br />

y First Person cerro en la primavera <strong>de</strong>l 1994. Pese al oque parecía ya un olvido <strong>de</strong>finitivo, Bill Joy, cofundador <strong>de</strong><br />

Sun y uno <strong>de</strong> los <strong>de</strong>sarrolladores principales <strong>de</strong> Unís <strong>de</strong> Bekeley, juzgó que Internet podía llegar a ser el campo <strong>de</strong><br />

juego a<strong>de</strong>cuado para disputar a Microsoft supremacía casi absoluta en e terreno <strong>de</strong>l software, y vio en Oak el<br />

instrumento idóneo para llevar a cabo esto planes. Tras un cambio <strong>de</strong> nombre y algunos <strong>de</strong> diseño, el lenguaje Java<br />

fue presentado en sociedad en agosto <strong>de</strong>l 1995.<br />

No obstante, lo mejor será hacer caso omiso <strong>de</strong> las historias que preten<strong>de</strong>n dar carta <strong>de</strong> naturaleza a la<br />

clarivi<strong>de</strong>ncia industrial <strong>de</strong> sus protagonistas; Porque la cuestión es si in<strong>de</strong>pendientemente <strong>de</strong> su origen y entorno<br />

comercial, Java ofrece soluciones a las expectativas <strong>de</strong>l lector. Porque tampoco es cuestión <strong>de</strong> <strong>de</strong>sechar la<br />

penicilina auque su origen haya sido origen <strong>de</strong> la casualidad.<br />

8


CARACTERIISSTIICASS DE JJAVA<br />

Java al igual que cualquier otro lenguaje <strong>de</strong> programación, dispone <strong>de</strong> sus propias peculiarida<strong>de</strong>s, que<br />

representan una ventaja o una <strong>de</strong>sventaja <strong>de</strong>pendiendo <strong>de</strong> la aplicación que se vaya a realizar. Por ello, este<br />

capitulo esta <strong>de</strong>dicado a recoger las principales características propias <strong>de</strong> Java y proporcionar una visión <strong>de</strong>s<strong>de</strong> la<br />

perspectiva <strong>de</strong> la empresa sobre las expectativas que se colocar sobre Java.<br />

CARACTERÍSTICAS PRINCIPALES DE JAVA<br />

Las características principales que ofrece Java frente a cualquier otro lenguaje <strong>de</strong> programación, se podría<br />

resumir en las siguientes:<br />

SIMPLE<br />

Java ofrece toda la funcionalidad <strong>de</strong> un lenguaje potente, pero sin las características menos usadas y más<br />

confusas <strong>de</strong> estos. C++ no es un lenguaje conveniente por razones <strong>de</strong> seguridad, pero C y C++ son los lenguajes<br />

mas ampliamente difundidos, por ello Java se diseño para ser parecido a C++ y así facilitar un rápido y fácil<br />

aprendizaje.<br />

Java elimina muchas <strong>de</strong> las características <strong>de</strong> otros lenguajes como C++, para mantener reducidas las<br />

especificaciones <strong>de</strong>l lenguaje y añadir características muy útiles como el garbage collector (reciclador <strong>de</strong> memoria<br />

dinámica). No es necesario preocuparse <strong>de</strong> liberar memoria, el reciclador se encarga <strong>de</strong> ello y como es <strong>de</strong> baja<br />

prioridad, cuando entra en acción, permite liberar bloques <strong>de</strong> memoria muy gran<strong>de</strong>s, lo que limita mucho la<br />

fragmentación <strong>de</strong> memoria.<br />

Java reduce en un 50% los errores mas comunes <strong>de</strong> programación con lenguajes como C y C++ al eliminar<br />

muchas <strong>de</strong> las características <strong>de</strong> estos, entre las que <strong>de</strong>stacan:<br />

• aritmética <strong>de</strong> punteros<br />

• no existen referencias<br />

• registros (struct)<br />

• <strong>de</strong>finición <strong>de</strong> tipos (type<strong>de</strong>f)<br />

• macros(#<strong>de</strong>fine)<br />

• necesidad <strong>de</strong> liberar memoria<br />

ORIENTADO A OBJETOS<br />

Java implementa la tecnología básica <strong>de</strong> C++ con algunas mejoras y elimina algunas cosas para mantener<br />

el objetivo <strong>de</strong> la simplicidad <strong>de</strong>l lenguaje. Java trabaja con sus datos como Objetos y con interfaces <strong>de</strong> esos objetos.<br />

Soporta las tres características propias <strong>de</strong>l paradigma <strong>de</strong> la orientación a objetos: Encapsulacion, herencia y<br />

polimorfismo. Las plantillas <strong>de</strong> Objeto son llamadas, como en C++, Clases y sus copias, instancias. Estas<br />

instancias, como en C++, necesitan ser construidas y <strong>de</strong>struidas en espacios <strong>de</strong> memoria.<br />

DISTRIBUIDO<br />

9


Java se ha construido con extensas capacida<strong>de</strong>s <strong>de</strong> interconexión TCP/IP. Existen librerías <strong>de</strong> rutinas para<br />

acce<strong>de</strong>r e interactuar con protocolos como http y ftp. Esto permite a los <strong>programadores</strong> acce<strong>de</strong>r a la información a<br />

través <strong>de</strong> la red con tanta facilidad como a los ficheros locales.<br />

Java en si no es distribuido, sino que proporciona las librarías y herramientas para que los programas<br />

puedan ser distribuidos, es <strong>de</strong>cir, que se ejecuten en varias maquinas, interactuando.<br />

ROBUSTO<br />

Java realiza verificaciones en busca <strong>de</strong> problemas tanto en tiempo <strong>de</strong> compilación como en tiempo <strong>de</strong><br />

ejecución. La comprobación <strong>de</strong> tipos en Java ayuda a <strong>de</strong>tectar errores, lo antes posible, en el ciclo <strong>de</strong> <strong>de</strong>sarrollo.<br />

Java obliga a la <strong>de</strong>claración explicita <strong>de</strong> métodos, reduciendo así las posibilida<strong>de</strong>s <strong>de</strong> error. Maneja la memoria<br />

para eliminar las preocupaciones por parte <strong>de</strong>l programador <strong>de</strong> la liberación o corrupción <strong>de</strong> memoria.<br />

A<strong>de</strong>más, para asegurar el funcionamiento <strong>de</strong> la aplicación, realiza una verificación <strong>de</strong> los Bites Co<strong>de</strong>s, que<br />

son el resultado <strong>de</strong> la compilación <strong>de</strong> un programa Java.<br />

ARQUITECTURA NEUTRAL<br />

<strong>Para</strong> establecer Java como parte integral <strong>de</strong> la red, el compilador Java compila su código a un fichero <strong>de</strong><br />

formato in<strong>de</strong>pendiente <strong>de</strong> la arquitectura <strong>de</strong> la maquina en que se ejecutara. Cualquier maquina que tenga el<br />

sistema <strong>de</strong> ejecución (Run Time) pu<strong>de</strong> ejecutar ese código objeto, in<strong>de</strong>pendientemente <strong>de</strong> la maquina en la que ha<br />

sido generado. Actualmente existen sistams run time para Solaris 2.x, MacOs. 4.1.x, Windows 95/98, Windows<br />

NT, Linux, HP-UX, Iris, Aix, MacOs, Applet y probablemente haya grupos <strong>de</strong> <strong>de</strong>sarrolladores trabajando el<br />

porting a otras plataformas.<br />

SEGURO<br />

La seguridad en Java tiene dos facetas. En el lenguaje, características como los punteros o el casting<br />

implícito que hace el compilador <strong>de</strong> C y C++, se elimina para prevenir el acceso ilegal a la memoria. Cuando se<br />

usa Java para crear un navegador, se combinan las características <strong>de</strong> lenguaje con protecciones <strong>de</strong> sentido común<br />

aplicadas al propio navegador.<br />

El código Java pasa muchas comprobaciones antes <strong>de</strong> ejecutarse en una maquina. El código se pasa a través<br />

<strong>de</strong>l verificador <strong>de</strong> Bites Co<strong>de</strong> que comprueba el formato <strong>de</strong> los fragmentos <strong>de</strong> código y aplica un probador <strong>de</strong><br />

teoremas para <strong>de</strong>tectar fragmentos <strong>de</strong> código ilegal –código que falsea punteros, viola <strong>de</strong>rechos <strong>de</strong> acceso sobre<br />

Objetos o intenta cambiar el tipo o clase <strong>de</strong> un objeto-.<br />

El cargador <strong>de</strong> clases también ayuda a Java a mantener su seguridad, separando el espacio <strong>de</strong> nombres <strong>de</strong>l<br />

sistema <strong>de</strong> ficheros local <strong>de</strong> los recursos proce<strong>de</strong>ntes <strong>de</strong> la red. Esto limita cualquier aplicación <strong>de</strong>l tipo Caballo <strong>de</strong><br />

Troya, ya que las clases se buscan primero entre las locales y luego ente las proce<strong>de</strong>ntes <strong>de</strong>l exterior.<br />

Las clases importadas <strong>de</strong> la red se almacenan en un espacio <strong>de</strong> nombres privado, asociado con el origen.<br />

Cuando una clase <strong>de</strong>l espacio <strong>de</strong> nombres privado acce<strong>de</strong> a otra clase. Primero se busca en las clases pre<strong>de</strong>finidas<br />

(<strong>de</strong>l sistema local) y luego en el espacio <strong>de</strong> nombres <strong>de</strong> la clase que hace la referencia. Esto imposibilita que una<br />

clase suplante a una pre<strong>de</strong>finida.<br />

Dada, pues, la concepción <strong>de</strong>l lenguaje y si todos los elementos se mantienen <strong>de</strong>ntro <strong>de</strong>l estándar marcado<br />

por Sun, no hay peligro. Java imposibilita, también, abrir ficheros <strong>de</strong> la maquina local (siempre que realiza<br />

operaciones con archivos, estas trabajan sobre el disco duro <strong>de</strong> la maquina <strong>de</strong> don<strong>de</strong> partió el applet), no permite<br />

ejecutar ninguna aplicación nativa <strong>de</strong> una plataforma e impi<strong>de</strong> que se utilicen otros or<strong>de</strong>nadores como puente, es<br />

10


<strong>de</strong>cir, nadie pue<strong>de</strong> utilizar una maquina para hacer peticiones o realizar operaciones con otra. A<strong>de</strong>más, los<br />

intérpretes que incorporan los navegadores Web son aun más restrictivos. Bajo estas condiciones (y <strong>de</strong>ntro <strong>de</strong> la<br />

filosofía <strong>de</strong> que el único or<strong>de</strong>nador seguro es el que esta apagado, <strong>de</strong>senchufado, <strong>de</strong>ntro <strong>de</strong> una cámara acorazada<br />

en un bunker y ro<strong>de</strong>ado por mil soldados <strong>de</strong> los cuerpos espaciales <strong>de</strong>l ejercito), se pue<strong>de</strong> consi<strong>de</strong>rar que Java es un<br />

lenguaje seguro y que los applets están libres <strong>de</strong> virus.<br />

Respecto a la seguridad <strong>de</strong>l código fuente, no ya el lenguaje, el propio JDK proporciona un <strong>de</strong>sensamblador<br />

<strong>de</strong> Byte Co<strong>de</strong>, que hace que cualquier programa pueda ser convertido a código fuente, lo que para el programador<br />

significa una vulnerabilidad total a su código. Utilizando JavaP no se obtiene código fuente original, pero si<br />

<strong>de</strong>smonta el programa mostrando el algoritmo que se utiliza, que es lo realmente interesante. La protección ante<br />

esto es utilizar llamadas programas nativos, externos (incluso en C o C++) <strong>de</strong> forma que no sea <strong>de</strong>scompilable todo<br />

el código; aunque así se pierda portabilidad. Esta es otra <strong>de</strong> las cosas que Java tiene pendientes.<br />

PORTABLE<br />

Mas allá <strong>de</strong> la portabilidad básica por ser <strong>de</strong> arquitectura in<strong>de</strong>pendiente, Java implementa otros estándares<br />

<strong>de</strong> portabilidad para facilitar el <strong>de</strong>sarrollo. Los enteros son siempre enteros y, a<strong>de</strong>más, enteros <strong>de</strong> 32 bits en<br />

complemento a 2. A<strong>de</strong>más, Java construye sus interfaces <strong>de</strong> usuario a través <strong>de</strong> ventanas <strong>de</strong> forma que estos<br />

pue<strong>de</strong>n ser implementados en entornos Unís, PC o Mac.<br />

INTERPRETADO<br />

El interprete <strong>de</strong> Java (sistema run-time) pue<strong>de</strong> ejecutar directamente el código objeto. Enlazar un programa<br />

normalmente consume menos recursos que compilarlo, por lo que los <strong>de</strong>sarrolladores con Java pasaran menos<br />

tiempo <strong>de</strong>sarrollando y menos esperando por el or<strong>de</strong>nador. No obstante, el compilador actual <strong>de</strong>l JDK es bastante<br />

lento. Por ahora, en que todavía no hay compiladores específicos <strong>de</strong> Java para las diversas plataformas, Java es mas<br />

lento que otros lenguajes <strong>de</strong> programación, como C++, ya que <strong>de</strong>be ser interpretado y no ejecutado como suce<strong>de</strong> en<br />

cualquier programa tradicional. No obstante, este panorama esta cambiando a pasos agigantados, y aunque Java<br />

sigue siendo básicamente un lenguaje interpretado, la situación se acerca mucho a la <strong>de</strong> los programas compilados,<br />

sobre todo en lo que a la rapi<strong>de</strong>z en la ejecución <strong>de</strong>l código se refiere.<br />

MULTITAREA<br />

Al ser multitarea o multihilo (o multihilvanado “multithread”), Java permite realizar muchas activida<strong>de</strong>s<br />

simultaneas en un programa. El termino multithread es <strong>de</strong> difícil traducción, aunque actualmente parece ser que la<br />

palabra multitarea para expresar lo mismo es la que esta mas comúnmente aceptada. Las tareas – a veces llamadas,<br />

procesos ligeros, o hilos <strong>de</strong> ejecución – son básicamente pequeños procesos o piezas in<strong>de</strong>pendientes <strong>de</strong> un gran<br />

proceso. Al estar estas tareas construidas en el mismo lenguaje, son mas fáciles <strong>de</strong> usar y mas robustos que sus<br />

homólogos en C o C++.<br />

El beneficio <strong>de</strong> ser multitarea consiste en un mejor rendimiento interactivo y mejor comportamiento en<br />

tiempo real. Aunque el comportamiento en tiempo real esta limitado a las capacida<strong>de</strong>s <strong>de</strong>l sistema operativo<br />

subyacente (Unís, Windows, est.) <strong>de</strong> la plataforma, aun supera a los entornos <strong>de</strong> flujo único <strong>de</strong> programa (single-<br />

threa<strong>de</strong>d) tanto en facilidad <strong>de</strong> <strong>de</strong>sarrollo como en rendimiento.<br />

DINAMICO<br />

Java se beneficia todo lo posible <strong>de</strong> la tecnología Orientada a Objetos y no intenta conectar todos los<br />

módulos que compren<strong>de</strong>n una aplicación hasta el mismo tiempo <strong>de</strong> ejecución. Las librerías nuevas o actualizadas<br />

no paralizaran la ejecución <strong>de</strong> las aplicaciones actuales siempre que mantenga el API anterior.<br />

11


API S DE LA PLATAFORMA JAVA<br />

<strong>Para</strong> que se tenga una i<strong>de</strong>a <strong>de</strong> que es lo que se mueve alre<strong>de</strong>dor <strong>de</strong> java, no hay mejor información que la<br />

<strong>de</strong>scripción <strong>de</strong> los APIs que componen la plataforma Java, aunque no todas las que aquí se citan estan disponibles<br />

para su uso, ya que algunas se encuentran en fase <strong>de</strong> <strong>de</strong>sarrollo, otras en fase <strong>de</strong> discusión publica para aporte <strong>de</strong><br />

i<strong>de</strong>as y otras en fase beta.<br />

Java Enterprice Conjunto <strong>de</strong> especificaciones para entornos corporativos<br />

JDBC API Java Database Conectivity, para permitir a las aplicaciones o applets acce<strong>de</strong>r<br />

a bases <strong>de</strong> datos <strong>de</strong> forma homogénea vía consultas SQL.<br />

Java RMI Remote Meted Invocation, invocación remota <strong>de</strong> métodos para aplicaciones<br />

distribuidas.<br />

Java IDL Puente <strong>de</strong> compatibilidad con el mo<strong>de</strong>lo estándar <strong>de</strong> objetos CORBA.<br />

JNDI Java Naming and Directory Interfase, proporciona servicios <strong>de</strong> directorio y<br />

localización <strong>de</strong> recursos en un entorno corporativo.<br />

JavaBeans Especificación <strong>de</strong> componentes basados en Java<br />

JAF JavaBeans Activation Framework, entorno para <strong>de</strong>terminar el tipo <strong>de</strong> datos,<br />

encapsular el acceso a ellos, <strong>de</strong>scubrir las acciones que se les pue<strong>de</strong>n aplicar e<br />

instanciar el componente JavaBeans a<strong>de</strong>cuado.<br />

Java Security API API para componentes que necesitan encriptación, certificación, firmas<br />

digitales y autenticación.<br />

JFC Java Fundation Classes, jerarquía <strong>de</strong> clases para el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones<br />

graficas e interfaces <strong>de</strong> usuario.<br />

Swing Set Conjunto <strong>de</strong> pequeños componentes gráficos para aplicaciones: botones,<br />

pestañas, etc.<br />

Java 2D Extensión <strong>de</strong>l AWT para el tratamiento <strong>de</strong> información grafica bidimensional.<br />

Java Servlet API Especificaciones que permiten crear applets que se ejecutan en el servidor.<br />

Java Server API API para el intercambio <strong>de</strong> información entre un servidor Web y aplicaciones<br />

que se ejecutan en su entorno.<br />

Java Comerse API Conjunto <strong>de</strong> especificaciones para el acceso y utilización <strong>de</strong> información<br />

interactiva.<br />

JMF Java Media Framework, Conjunto <strong>de</strong> especificaciones para la arquitectura,<br />

protocolos e interfaces <strong>de</strong> programación, para reproductores multimedia,<br />

captura y vi<strong>de</strong>oconferencia.<br />

Java Colaboración Especificación para la comunicación interactiva bidireccional.<br />

Java Telephony Especificación para aplicaciones <strong>de</strong> telefonía<br />

Java Speech Especificación para el reconocimiento y sín<strong>tesis</strong> <strong>de</strong> voz<br />

Java Animation Especificación para la manipulación y movimiento <strong>de</strong> objetos bidimensionales<br />

Java 3D Especificación para la manipulación <strong>de</strong> Objetos tridimensionales<br />

Java Management API Especificación para la gestión remota <strong>de</strong> re<strong>de</strong>s.<br />

Java Bluetooth API Especificación para estandarizar un conjunto <strong>de</strong> clases Java que permiten a<br />

cualquier tipo <strong>de</strong> dispositivo integrarse en un entorno Bluetooth<br />

Java USB API Especificación para proporcionar un conjunto <strong>de</strong> clases <strong>de</strong>l puerto USB<br />

(Universal Serial Bus), <strong>de</strong> forma que las aplicaciones Java puedan manipular<br />

dispositivos manipulados al bus.<br />

Java Mail API Especificaciones para proporcionar un conjunto <strong>de</strong> clases abstractas que<br />

mo<strong>de</strong>lice un sistema <strong>de</strong> correo.<br />

12


Personal Java Especificaciones para aparatos electrónicos <strong>de</strong> consumo conectables a re<strong>de</strong>s,<br />

incluyendo televisores, teléfonos inteligentes, vi<strong>de</strong>oconsolas, etc.<br />

Java Smart Card Especificaciones para tarjetas inteligentes, tipo tarjetas <strong>de</strong> crédito<br />

Embed<strong>de</strong>d Java Especificaciones para dispositivos electrónicos industriales con software<br />

embebido ejecutándose sobre sistemas operativos en tiempo real, incluyendo<br />

dispositivos <strong>de</strong> instrumentación, electrónica <strong>de</strong> control <strong>de</strong> procesos, etc.<br />

Braile API Especificaciones para dispositivos que funcionen con líneas braile y facilitar<br />

el uso <strong>de</strong> estos dispositivos.<br />

PACKAGES <strong>de</strong> JAVA<br />

La siguiente figura muestra algunos <strong>de</strong> los packages que conforman el API <strong>de</strong> Java2SE, los nombres <strong>de</strong> los<br />

packages están dispuestos en forma <strong>de</strong> bloques, la figura forma parte <strong>de</strong> la pagina HTML que es el punto <strong>de</strong> inicio<br />

<strong>de</strong>l sistema <strong>de</strong> ayuda Java, esta figura forma un mapa <strong>de</strong> enlace, <strong>de</strong> tal modo que al hacer clic con el ratón sobre<br />

algunos <strong>de</strong> los bloques <strong>de</strong> la figura esta acción produce que se realice la apertura <strong>de</strong>l package y se nos muestre otra<br />

figura la cual contiene la jerarquía <strong>de</strong> herencia <strong>de</strong>l conjunto <strong>de</strong> clases e interfaces que lo conforman.<br />

13


La acción <strong>de</strong> clikar sobre la pieza <strong>de</strong> rompecabezas Java.applet realiza la apertura otra pagina que contiene<br />

la jerarquía <strong>de</strong> herencia <strong>de</strong> las clases e interfaces correspondientes, como se muestra a continuación en la siguiente<br />

figura.<br />

FIGURA 2. esta imagen también esta implementada como un mapa en el que al clikar sobre alguna <strong>de</strong> las<br />

figura que indica ser una clase o interfase nos envía a otra pagina don<strong>de</strong> po<strong>de</strong>mos ver la <strong>de</strong>finición completa <strong>de</strong><br />

la clase o Interfase correspondiente, incluso las figuras en cuadro guía proporcionan ayuda sobre la <strong>de</strong>finición <strong>de</strong><br />

clase, Interfase o la herencia.<br />

El cual contiene la clase Applet que es la superclase <strong>de</strong> todos los applets. <strong>Para</strong> crear un applet <strong>de</strong>bes<br />

exten<strong>de</strong>r(como una subclase) "extends" <strong>de</strong> Applet. El cual contiene muchos métodos para accesar datos <strong>de</strong>s<strong>de</strong> un<br />

servidor web, sirviendo al applet, tal como getImage() y getAudioClip(). <strong>Para</strong> crear un applet que corra <strong>de</strong>ntro <strong>de</strong><br />

un navegador web <strong>de</strong>bes exten<strong>de</strong>r la clase applet y sobre escribir los métodos init(), start(), stop() y <strong>de</strong>stroy(). <strong>Para</strong><br />

mas <strong>de</strong>talles sobre la implementación consulta la pagina web <strong>de</strong> este trabajo, en el cual podrás navegar <strong>de</strong>s<strong>de</strong> el<br />

inicio usando la figura 1(mapa <strong>de</strong> enlace), hasta llegar a la implementación <strong>de</strong> la clase y ver la sintaxis, <strong>de</strong>scripción<br />

y ejemplos <strong>de</strong> cada método. A<strong>de</strong>más los applets están sujetos a restricciones <strong>de</strong> seguridad. Una instancia <strong>de</strong> un<br />

Applet requiere <strong>de</strong> apoyo para funcionar correctamente, el cual es proporcionado por el navegador web o el<br />

appletViewer (visor <strong>de</strong> applets). Los applets están sujetos a restricciones <strong>de</strong> seguridad como ya se ha mencionado<br />

con anterioridad, los applets requieren <strong>de</strong> apoyo <strong>de</strong>l navegador web o <strong>de</strong>l appletViewer para su funcionamiento.<br />

CLASSSS<br />

Appppl leet t<br />

PACKAGE java.applet<br />

public class Applet extends Panel {<br />

//metodos <strong>de</strong> instancia<br />

public void <strong>de</strong>stroy()<br />

public AppletContext getAppletContext()<br />

public String getAppletInfo()<br />

public AudioClip getAudioClip(URL url)<br />

14


public AudioClip getAudioClip(URL url, String name)<br />

public URL getCo<strong>de</strong>Base()<br />

public URL getDocumentBase()<br />

public Image getImage(URL url)<br />

public Image getImage(URL url, String name)<br />

public String get<strong>Para</strong>meter(String name)<br />

public String[][] get<strong>Para</strong>meterInfo()<br />

public void init()<br />

public boolean isActive()<br />

public void play(URL url)<br />

public void play(URL url, String name)<br />

public void resize(Dimension d)<br />

public void final resize(Dimension d)<br />

public void showStatus(String msg)<br />

public void start()<br />

public void stop()<br />

}<br />

Método <strong>de</strong>stroy()<br />

sintaxis: public void <strong>de</strong>stroy( )<br />

Descripsion: El metodo <strong>de</strong>stroy habilita al applet para que limpie los recursos que este utilizo; Si este esta activo se<br />

invoca al metodo stop() posteriormente se <strong>de</strong>struye.<br />

public void <strong>de</strong>stroy() {<br />

// aqui se hace la limpieza<br />

// tales como liberar recursos<br />

// y/o <strong>de</strong>tener hilos<br />

}<br />

Método getAppletContext()<br />

Sintaxis: public AppletContext getAppletContext()<br />

Descripsion: Este metodo regresa el manejador al contexto <strong>de</strong>l applet. El contexto <strong>de</strong>l applet habilita al applet para<br />

controlar este entorno (usualmente el navegador o el visor <strong>de</strong> applets)<br />

try{<br />

URL clipUrl = new URL("file:///C:/src/ProRef/test.au");<br />

AppletContext myContext = getAppletContext();<br />

// pue<strong>de</strong> tomar ventaja <strong>de</strong>l cache <strong>de</strong> los navegadores<br />

AudioClip myClip = myContext.getAudioClip(clipUrl);<br />

myClip.play();<br />

}catch(MalformedURLException e){showStatus("URL Error.");}<br />

Método getAppletInfo<br />

Sinatxis: public String getAppletInfo()<br />

15


Descripsion: Despliega la informacion acerca <strong>de</strong>l autor, la version <strong>de</strong>l applet, retorna una ca<strong>de</strong>na <strong>de</strong> informacion<br />

particular <strong>de</strong> <strong>de</strong>rechos reservados.<br />

public String getAppletInfo() {<br />

return("Programa test v1.0 Nombre <strong>de</strong>l Autor");<br />

}<br />

Método getAudioClip(URL url)<br />

Sintaxis: public AudioClip getAudioClip(URL url)<br />

Descripsion: Carga una porcion <strong>de</strong> audio; Despues <strong>de</strong> que la clase tiene el objeto audioClip pue<strong>de</strong>s usar el metodo<br />

play() para reproducir el archivo <strong>de</strong> audio.<br />

try{<br />

URL clipUrl = new URL("file:///C:/src/ProRef/test.au");<br />

AudioClip myClip = getAudioClip(clipUrl);<br />

myClip.play();<br />

}catch(MalformedURLException e){shwStatus("URL Error");}<br />

Método getAudioClip(URL url, String name)<br />

Sinatxis: puclic AudioClip getAudioClip(URL url, String name)<br />

Descripsion: Carga una porcion <strong>de</strong> audio; El parametro URL indica la localizacion <strong>de</strong>l objeto; El parametro String<br />

indica la ca<strong>de</strong>na <strong>de</strong>l clip que quieres obtener.<br />

AudioClip myClip = getAudioClip(getDocumentBase(), "test.au");<br />

myClip.play();<br />

Método getCo<strong>de</strong>Base()<br />

Sintaxis: public URL getCo<strong>de</strong>Base()<br />

Descripsion: Despliega una ca<strong>de</strong>na que representa el directorio en el cual el applet esta contenido.<br />

Image getImage(URL url)<br />

Método getDocumentBase()<br />

Sinatxis: puclic URL getDocumentBase()<br />

Descripsion: Recupera el el objeto que representa el directorio <strong>de</strong>l archivo <strong>de</strong>s<strong>de</strong> el cual el applet corre.<br />

Image myImage = getImage(getDocumentBase(), "test.gif");<br />

getImage(URL url, String name)<br />

Método getImage(URL url)<br />

Sinatxis: puclic Image getImage(URL url)<br />

16


Descripsion: Carga un objeto imagen inmediatamente <strong>de</strong>s<strong>de</strong> la URL especificada y crea una instancia <strong>de</strong> la clase<br />

imagen. Este metodo algunas veces regresa un objeto imagen, incluso si la imagen no existe. El parametro URL<br />

indica la localizacion <strong>de</strong> la imagen u objeto en el internet.<br />

try{<br />

myImageUrl = new URL("file:///C:/src/bookProRef/test.gif");<br />

myImage = getImageUmy(myImageUrl);<br />

}catch(MalformedURLException e){showStatus("URL Error");}<br />

Método getImage(URL url, String name)<br />

Sinatxis: puclic Image getImage(URL url, String name)<br />

Descripsion: Carga un objeto imagen <strong>de</strong>s<strong>de</strong> la URL<br />

especificada y crea una instancia <strong>de</strong> la clase imagen. Este metodo tambien especifica la ca<strong>de</strong>na que representa la<br />

ruta o el nombre <strong>de</strong>l archivo <strong>de</strong> la imagen actual. Este metodo algunas veces regresa un objeto imagen, si la<br />

imagen no existe.El parametro URL indica la localizacion <strong>de</strong> la imagen u objeto en el internet. El parámetro String<br />

indica la ca<strong>de</strong>na <strong>de</strong>l objeto o imagen.<br />

Image myImage = getImage(getDocumentBase(), "test.gif");<br />

METODO get<strong>Para</strong>meter(String name)<br />

Sinatxis: public String get<strong>Para</strong>meter(String name)<br />

Descripsion: Busca el parámetro <strong>de</strong>l applet. Este método acepta un especificador <strong>de</strong> ca<strong>de</strong>na (el parámetro que<br />

representa el nombre <strong>de</strong>l parámetro que <strong>de</strong> esta buscando) y regresa una ca<strong>de</strong>na que contiene el valor<br />

correspondiente<br />

String si<strong>de</strong> = get<strong>Para</strong>meter("si<strong>de</strong>");<br />

try{<br />

int numPlayers = Integer.parseInt(get<strong>Para</strong>meter("numplayers"));<br />

testArea.appendText("numplayers is fine"\n");<br />

}catch(NumberFormatException e){ textArea.appendText("numplayers parameter badlyformatted"); }<br />

METODO get<strong>Para</strong>meterInfo()<br />

Sinatxis: puclic String[][] get<strong>Para</strong>meterInfo()<br />

Descripsion: Regresa un array <strong>de</strong> ca<strong>de</strong>nas que <strong>de</strong>scribe los parametros <strong>de</strong> un applet. El array usualmente consiste<br />

<strong>de</strong> un juego <strong>de</strong> tres ca<strong>de</strong>nas: El nombre <strong>de</strong>l parametro, El tipo <strong>de</strong> valor requerido para el parametro y la <strong>de</strong>scripsion<br />

<strong>de</strong>l parametro.<br />

public String[][] get<strong>Para</strong>meterInfo() {<br />

String[][] myInfo = {<br />

{"numplayers","integer","number of players uno o cero"},<br />

{"si<strong>de</strong>","character","must be character 'x' o '0'"}<br />

};<br />

return(myInfo);<br />

}<br />

17


Método init()<br />

Sinatxis: puclic void init()<br />

Descripsion: Inicializa el applet (Crea el objeto requerido, carga imagenes o fuentes y mas) cuando este es cargado<br />

o recargado. No se necesita llamar este metodo directamente, init es llamado automaticamente cuando el<br />

applet es creado.<br />

// Remplace el constructor - solo en la primera llamada<br />

// Llamado cuando el applet es creado<br />

public void init() {<br />

textArea = new TextArea(10,40);<br />

this.add(textArea);<br />

textArea.appendText("Initializad.\n");<br />

repaint();<br />

System.err.println("Initializing\n");<br />

}<br />

Método isActive()<br />

Sinatxis: puclic boolean isActive()<br />

Descripsion: Determina cuando el applet esta activo. Este metodo regresa verda<strong>de</strong>ro cuando el applet esta activo.<br />

Java marca un applet activo inmediatamente antes <strong>de</strong> que el metodo start sea llamado.<br />

try {<br />

URL clipURL = new URL("file:///c:/src/book/ProRef/test.au");<br />

play(clipURL);<br />

}catch(MalformedURLException e){showStatus("URL Error.");}<br />

IINTERFFACE<br />

Appppl leet tCoonnt teexxt t<br />

Define métodos usados por un applet para obtener información <strong>de</strong>l entorno <strong>de</strong>l applet, este es usualmente<br />

el navegador web o el appletViewer. No accese estos metodos directamente; use los metodos equivalentes en la<br />

clase Applet isntanciada.<br />

Public interface Applet {<br />

// Metodos <strong>de</strong> instancia<br />

Applet getApplet(String name);<br />

Enumeration getApplet(String name);<br />

AudioClip getAudioClip(URL url);<br />

Image getImage(URL url);<br />

void showDocument(URL url);<br />

18


public void showDocument(URL url, String target);<br />

void showStatus(String status);<br />

}<br />

IINTERFFACE<br />

Appppl leet tSSt tuubb<br />

Esta interfase obtiene información <strong>de</strong>l navegador Web. No accese estos métodos directamente; use un<br />

método equivalente <strong>de</strong> Applet.<br />

public interface AppletStub {<br />

// Metodos <strong>de</strong> instancia<br />

void appletResize(int width, int height);<br />

AppletContext getAppletContext( );<br />

URL getCo<strong>de</strong>Base( );<br />

URL getDocumentBase( );<br />

boolean isActive( );<br />

}<br />

IINTERFFACE<br />

Auuddi iooCl li ipp Esta Interfase es una simple implementación <strong>de</strong> un simple audio clip. La interfase<br />

<strong>de</strong>fine métodos que todo audio clip <strong>de</strong>be implementar, tales como play(), y stop(). El<br />

método applet.getAudioClip() regresa un objeto AudioClip.<br />

public interface AudioClip {<br />

//Métodos <strong>de</strong> la interfase<br />

void loop( );<br />

void play( );<br />

void stop( );<br />

}<br />

PPACKAGE JJAVA. .AWT<br />

El paquete Java.awt (Abstract Windowing Toolkit, o<br />

AWT) contiene clases para <strong>de</strong>zarrollar interfaces graficas<br />

<strong>de</strong> usuario (GUI´s). Las siguientes tres figuras muestran<br />

los esquemas <strong>de</strong> la jerarquía <strong>de</strong> herencia para el paquete<br />

java.awt, en la implementacion <strong>de</strong>l sistema <strong>de</strong> ayuda, esta figura es un mapa <strong>de</strong> tal modo<br />

que al clikar sobre alguna clase o Interfase que muestra se abre una pagina web con la <strong>de</strong>finición <strong>de</strong> esta clase o<br />

interface.<br />

19


CLASSSS<br />

AWTEvveennt t<br />

Esta clase es para manejo <strong>de</strong> eventos <strong>de</strong> alto nivel, esta clase y subclases sobrescriben a la clase original<br />

Java.awt.Event.<br />

public abstract class AWTEvent extends EventObject {<br />

protected int id;<br />

public final static long COMPONENT_EVENT_MASK;<br />

public final static long ONTAINER_EVENT_MASK;<br />

public final static long FOCUS_EVENT_MASK;<br />

public final static long KEY_EVENT_MASK;<br />

public final static long MOUSE_EVENT_MASK;<br />

public final static long MOUSE_MOTION_EVENT_MASK;<br />

public final static long WINDOW_EVENT_MASK;<br />

public final static long ACTION_EVENT_MASK;<br />

public final static long ADJUSTMENT_EVENT_MASK;<br />

public final static long ITEM_EVENT_MASK;<br />

public final static int RESERVED_ID_MASK;<br />

public final static long TEXT_EVENT_MASK;<br />

21


public AWTEvent(Event event)<br />

public AWTEvent(Object source, int id)<br />

protected void consume( )<br />

Event convertToOld( )<br />

public int getID( )<br />

int getOldEventKey(KeyEvent e)<br />

protected Boolean isConsumed( )<br />

public String paramString( )<br />

public String toString( )<br />

}<br />

CLASSSS<br />

AWTEvveennt tMuul lt ti iccaasst teerr<br />

Esta clase <strong>de</strong>spacha eventos a varios oyentes(listeners) <strong>de</strong> eventos. Pue<strong>de</strong>s registrar el oyente llamando al<br />

método apropiado add( ). Los eventos son enviados cuando el método asociado es llamado. Por ejemplo, para<br />

enviar un evento <strong>de</strong> tecla presionada, use el método KeyPressed( ).<br />

public class AWTEventMulticaster implements ComponentListener, ContainerListener, FocusListener,<br />

KeyListener, MouseListener, MouseMotionListener, WindowListener, ActionListener,<br />

ItemListener, AdjustementListener, TextListener {<br />

protected EventListener a, b;<br />

public void actionPerformed(ActionEvent e)<br />

public static ComponentListener add(ComponentListener a, ComponentListener b)<br />

public static ComponentListener add(ComponentListener a, ContainerListener b)<br />

public static FocusListener add(FocusListener a, FocusListener b)<br />

public static KeyListener add(KeyListener a, KeyListener b)<br />

public static MouseListener add(MouseMotionListener a, MouseMotionListener b)<br />

public static WindowListener add(WindowListener a, WindowListener b)<br />

public static ActionListener add(ActionListener a Action Listener b)<br />

public static ItemListener add(ItemListener a, ItemListener b)<br />

public static AdjustmentListener add(AdjustmentListener a, AdjustmentListener b)<br />

public static TextListener add(TextListener a, TextListener b)<br />

protected static EventListener addInternal(EventListener a, EventListener b)<br />

public void AdjustmentValueChanged(AdjustmentEvent e)<br />

protected AWTEventMulticaster(EventListener a, EventListener b)<br />

public void componentAd<strong>de</strong>d(ContainerEvent e)<br />

public void ComponentHid<strong>de</strong>n(ComponentEvent e)<br />

public void ComponentMoved(ComponentEvent e)<br />

public void ComponentRemoved(ComponentEvent e)<br />

public void ComponentResized(ComponentEvent e)<br />

public void ComponentShown(ComponentEvent e)<br />

public void focusGained(FocusEvent e)<br />

public void focusLost(FocusEvent e)<br />

public void itemStateChanged(ItemEvent e)<br />

public void keyPressed(KeyEvent e)<br />

public void keyReleased(KeyEvent e)<br />

22


public void keyTyped(KeyEvent e)<br />

public void mouseClicked(MouseEvent e)<br />

public void mouseDragged(MouseEvent e)<br />

public void mouseEntered(Mouse Event e)<br />

public void mouseExited(MouseEvent e)<br />

public void mouseMoved(MouseEvent e)<br />

public void mosePressed(MouseEvent e)<br />

public void mouseReleased(MouseEvent e)<br />

potected EventListener remove(EventListener old)<br />

public static ComponentListener remove(ComponentListener l, ComponentListener oldl)<br />

public static ContainerListener remove(ContainerListener 1,ContainerListener oldl)<br />

public static FocusListener remove(FocusListener 1,FocusListener oldl)<br />

public static KeyListener remove(KeyListener 1, KeyListener oldl)<br />

public static MouseListener remove(MouseListener 1,MouseListener oldl)<br />

public static MouseMotionListener remove(MouseMotionListener 1, MouseMotionListener oldl)<br />

public static WindowListener remove(WindowListener 1,WindowListener oldl)<br />

public static ActionListener remove(ActionListener 1, ActionListener oldl)<br />

public static ItemListener remove(ItemListener 1, ItemListener oldl)<br />

public static AdjustmentListener remove(AdjustmentListener 1, AdjustmentListener oldl)<br />

public static TextListener remove(TextListener 1, TextListener oldl)<br />

protected static EventListener removeInternal(EventListener 1, EventListener oldl)<br />

public void textValueChanged(TextEvent e)<br />

public void windowActivated(WindowEvent e)<br />

public void windowClosed(WindowEvent e)<br />

public void windowClosing(WindowEvent e)<br />

public void windowDeactivated(WindowEvent e)<br />

public void windowDeiconified(WindowEvent e)<br />

public void windowIconified(WindowEvent e)<br />

public void windowOpened(WindowEvent e)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Addj juusst taabbl lee<br />

Use esta interfase con componentes que pue<strong>de</strong>n ser ajustados, tales como barras <strong>de</strong>slizables (scroll bar)<br />

public interface Adjustable {<br />

public static final int HORIZONTAL;<br />

public static final int VERTICAL;<br />

void addAdjustmentListener(AdjustmentListener 1);<br />

int getBlockIncrement( );<br />

int getMaximum ( );<br />

int getMinimum( );<br />

int getOrientation( );<br />

int getUnitIncrement( );<br />

int getValue( );<br />

int getVisibleAmount( );<br />

23


void removeAdjustmentListener(AdjustmentListener l);<br />

void setBlocklncrement(int b);<br />

void setMaximum(int max);<br />

void setMinimum(int min);<br />

void setUnitIncrement(int u);<br />

void setValue(int v);<br />

void setVisibleAmount(int v);<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Boorrd<strong>de</strong>errLaayyoouut t<br />

Bor<strong>de</strong>rLayout es un manejador <strong>de</strong> diseño con cinco áreas para agregar componentes: Norte, Sur, Este,<br />

Oeste, Centro. El argumento <strong>de</strong> ca<strong>de</strong>na para el metodo add( ) para contenedores especificos en el cual los<br />

componentes pue<strong>de</strong>n ser agregados. Si no se especifica el area se toma el Centro por <strong>de</strong>fault. El tamaño <strong>de</strong> cada<br />

area <strong>de</strong>pen<strong>de</strong> <strong>de</strong> el tamaño pre<strong>de</strong>finidos <strong>de</strong> los componentes en el area. El Centro esta por encima <strong>de</strong> cualquiera <strong>de</strong><br />

las <strong>de</strong>mas areas. Si necesita mas <strong>de</strong> un componente en un area, agrege aun panel con el componente <strong>de</strong>ntro.<br />

public class Bor<strong>de</strong>rLayout implements LayoutManager2, java.io.Serializable {<br />

int hgap;<br />

int vgap;<br />

Component north;<br />

Component west;<br />

Component east;<br />

Component south;<br />

Component center;<br />

public static final String NORTH;<br />

public static final String SOUTH;<br />

public static final String EAST;<br />

public static final String WEST;<br />

public static final String CENTER;<br />

public void addLayoutComponent(Component comp, Object constraints)<br />

public void addLayoutComponent(String name, Component comp)<br />

public Bor<strong>de</strong>rLayout( )<br />

public Bor<strong>de</strong>rLayout(int hgap, int vgap)<br />

public int getHgap( )<br />

public float getLayoutAlignmentX(Container parent)<br />

public float getLayoutAlignmentY(Container parent)<br />

public int getVgap( )<br />

public void invalidateLayout(Container target)<br />

public void layoutContainer(Container target)<br />

public Dimension maximumLayoutSize(Container target)<br />

public Dimension minimumLayoutSize(Container target)<br />

public Dimension preferredLayoutSize(Container target)<br />

public void removeLayoutComponent(Component comp)<br />

24


public void setHgap(int hgap)<br />

public void setVgap(int vgap)<br />

public String toString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Buut tt toonn<br />

Button es un simple componente boton-oprimible, pue<strong>de</strong>s agregar un botón a un contenedor, tal como Panel<br />

o marco(Frame), para este sea utilizado.<br />

public class Button extends Component {<br />

String label;<br />

String actionCommand;<br />

ActionListener actionListener;<br />

public void addActionListener(ActionListener 1)<br />

public void addNotify( )<br />

public Button( )<br />

public Button(String label)<br />

boolean eventEnabled(AWTEvent e)<br />

public String getActionCommand( )<br />

public String getLabel( )<br />

protected String paramString( )<br />

protected void processActionEvent(ActionEvent e)<br />

protected void processEvent(AWTEvent e)<br />

public void removeActionListener(ActionListener 1)<br />

public void setActionCommand(String command)<br />

public synchronized void setLabel(String label)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. ..Caannvvaass<br />

Canvas es una area reactangular comunmente usada para dibujar o construir componentes <strong>de</strong> cliente.<br />

Canvas se parece a panel, pero pue<strong>de</strong>s agregar componentes a canvas como con paneles. Esto es <strong>de</strong>vido a que<br />

panel es un contenedor, esto significa que pue<strong>de</strong> mantener otro componentes anteriores, y canvas no.<br />

public class Canvas extends Component {<br />

public void addNotify( )<br />

public Canvas( )<br />

public void paint(Graphics g)<br />

boolean postsOldMouseEvents( )<br />

}<br />

25


CLASSSS JJaavvaa. .aawt t. .CaarrddLaayyoouut t<br />

CardLayout le permite mostrar un Componente o Panel a la vez, tantas como un abanico <strong>de</strong> tarjetas<br />

engalanadas, salvando su valor <strong>de</strong> espacio en pantalla. <strong>Para</strong> usar CardLayout, simplemente cree un conjunto <strong>de</strong><br />

Panels con componentes <strong>de</strong>ntro y agregar este a un contenedor a lo largo con una ca<strong>de</strong>na dada al nombre <strong>de</strong> un<br />

panel, si quieres mostrar un panel en particular, simplemente llame al método add( ) con el nombre <strong>de</strong>l panel.<br />

public class CardLayout implements LayoutManager2, java.io.Serializable {<br />

Hashtable tab;<br />

int hgap;<br />

int vgap;<br />

public void addLayoutComponent(Component comp, Object constraints)<br />

public void addLayoutComponent(String name, Component comp)<br />

public CardLayout()<br />

public CardLayout(int hgap, int vgap)<br />

void checkLayout(Container parent)<br />

public void first(Container parent)<br />

public int getHgap( )<br />

public float getLayoutAlignmentX(Container parent)<br />

public float getLayoutAlignmentY(Container parent)<br />

public int getVgap()<br />

public void invalidateLayout(Container target)<br />

public void last(Container parent)<br />

public void layoutContainer(Container parent)<br />

public Dimension maximumLayoutSize(Container target)<br />

public Dimension minimumLayoutSize(Container parent)<br />

public void next(Container parent)<br />

public Dimension preferredLayoutSize(Container parent)<br />

public void previous(Container parent)<br />

public void removeLayoutComponent(Component comp)<br />

public void setHgap(int hgap)<br />

public void setVgap(int vgap)<br />

public void show(Container parent, String name)<br />

public String toString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Chheecckkbbooxx<br />

Checkbox crea un simple on/of caja checada. Las cajas checkeables actuan in<strong>de</strong>pendientemente por <strong>de</strong>fault.<br />

Si quieres hacer que varias cajas actúen <strong>de</strong> manera mut<strong>uam</strong>ente exclusiva, que los usuarios <strong>de</strong> Mac llaman botones<br />

<strong>de</strong> radio, es necesario crear un grupo <strong>de</strong> check box (CheckboxGroup).<br />

public class Checkbox extends Component implements ItemSelectable {<br />

String label;<br />

boolean state;<br />

CheckboxGroup group;<br />

ItemListener itemListener;<br />

26


public void addItemListener(ItemListener 1)<br />

public void addNotify( )<br />

public Checkbox( )<br />

public Checkbox(String label)<br />

public Checkbox(String label, boolean state)<br />

public Checkbox(String label, boolean state, CheckboxGroup group)<br />

public Checkbox(String label, CheckboxGroup group, boolean state)<br />

boolean eventEnabled(AWTEvent e)<br />

public CheckboxGroup getCheckboxGroup( )<br />

public String getLabel() public Object[] getSelectedObjects( )<br />

public boolean getState() protected String paramString( )<br />

protected void proceszEvent(AWTEvent e)<br />

protected void processltemEvent(ItemEvent e)<br />

public void removeItemListener(ItemListener 1)<br />

public void setCheckboxGroup(CheckboxGroup g)<br />

public synchronized void setLabel(String label)<br />

public void setState(boolean state)<br />

synchronized void setStatelnternal(boolean state)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .ChheecckkbbooxxGrroouupp<br />

CheckboxGroup crea grupos <strong>de</strong> Checkboxes mut<strong>uam</strong>ente exclusivos, Los cuales son llamdos radio buttons<br />

en el mundo <strong>de</strong> Mac. CheckboxGroup no es difícil <strong>de</strong> usar. Simplemente cree una instancia <strong>de</strong> CheckboxGroup y<br />

referirse a esta cuando usted cree cada Checkboxes, Esto es, solo una forma en la los Ckeckboxes pue<strong>de</strong>n ser<br />

agrupados en un momento dado.<br />

public class CheckboxGroup implements java.io.Serializable {<br />

Checkbox selectedCheckbox;<br />

public CheckboxGroup( )<br />

public Checkbox getCurrent( )<br />

public Checkbox getSelectedCheckbox( )<br />

public synchronized void setCurrent(Checkbox box)<br />

public synchronized void setSelectedCheckbox(Checkbox box)<br />

public String toString()<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..ChheecckkbbooxxMeennuuIIt teem<br />

Esta clase crea un MenuItem con una caja chekable <strong>de</strong>ntro <strong>de</strong> este. Cuando seleccionas el item <strong>de</strong>s<strong>de</strong> el<br />

menu, el estado <strong>de</strong>l checkbox cambia. Este se comporta como un ManuItem cualquiera.<br />

public class CheckboxMenultem extends Menultem implements Itemselectable {<br />

boolean state;<br />

ItemListener itemListener;<br />

public void addItemListener(ItemListener 1)<br />

public void addNotifyO public CheckboxMenultem( )<br />

public CheckboxMenultem(String label)<br />

27


public CheckboxMenultem(String label, boolean state)<br />

boolean eventEnabled(AWTEvent e)<br />

public synchronized Object[1 getSelectedObjects( )<br />

public boolean getState( )<br />

public String paramString()<br />

protected void processEvent(AWTEvent e)<br />

protected void processltemEvent(ItemEvent e)<br />

public void removeltemListener(ItemListener 1)<br />

public synchronized void setState(boolean b)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .Chhooi iccee<br />

Choice es como un menú emergente, solo es posible seleccionar uno <strong>de</strong> los Ítem a la vez.<br />

public class Choice extends'Component implements ItemSelectable {<br />

Vector pItems;<br />

int selectedln<strong>de</strong>x;<br />

ItemListener itemListener;<br />

public synchronized void add(String item)<br />

public synchronized void addltem(String item)<br />

public void addltemListener(ItemListener 1)<br />

public void addNotify( )<br />

public Choice( )<br />

public int countltems( )<br />

boolean eventEnabled(AWTEvent e)<br />

public String getItem(int in<strong>de</strong>x)<br />

public int getItemCount( )<br />

public int getSelectedln<strong>de</strong>x( )<br />

public synchronized String getSelectedltem( )<br />

public synchronized Object[] getSelectedObjects( )<br />

public synchronized void insert(String item, int in<strong>de</strong>x)<br />

protected String paramString( )<br />

protected void processEvent(AWTEvent e)<br />

protected void processltemEvent(ItemEvent e)<br />

public synchronized void remove(String item)<br />

public synchronized void remove(int position)<br />

public synchronized void removeAll( )<br />

public void removeltemListener(ItemListener 1)<br />

public synchronized void select(int pos)<br />

public synchronized void select(String str)<br />

}<br />

28


CLASSSS JJaavvaa. ..aawt t. ..Cool loorr<br />

Color es un objeto que pue<strong>de</strong> ser fijado a un color con valor <strong>de</strong> 32 bits representando 8 bits para el rojo,<br />

gris, azul y alfa. Pue<strong>de</strong>s crear un color con valores enteros o <strong>de</strong> punto flotante. El rango <strong>de</strong> valores enteros estan<br />

entre 0 y 255, Consi<strong>de</strong>rando los valores <strong>de</strong> punto flotante en el rango <strong>de</strong> 0.0 a 1.0.<br />

public class Color implements java.io.Serializable {<br />

public final static Color white;<br />

public final static Color lightGray;<br />

public final static Color gray;<br />

public final static Color darkGray;<br />

public final static Color black;<br />

public final static Color red;<br />

public final static Color pink;<br />

public final static Color orange;<br />

public final static Color yellow;<br />

public final static Color green;<br />

public final static Color magenta;<br />

public final static Color cyan;<br />

public final static Color blue;<br />

transient private int pData;<br />

int value;<br />

private static final double FACTOR;<br />

public Color brighter( )<br />

public Color(int r, int g, int b)<br />

public Color(int rgb)<br />

public Color(float r, float g, float b)<br />

public Color darker( )<br />

public static Color <strong>de</strong>co<strong>de</strong>(String nm) throws NumberFormatException<br />

public boolean equals(Object obj)<br />

public int getBlue( )<br />

public static Color getColor(String nm)<br />

public static Color getColor(String nm, Color v)<br />

public static Color getColor(String nm, int v)<br />

public int getGreen( )<br />

public static Color getHSBColor(float h, float s, float b)<br />

public int getRed( )<br />

public int getRGB( )<br />

public int hashCo<strong>de</strong>( )<br />

public static int HSBtoRGB(float hue, float saturation, float brightness)<br />

public static floatEl RGBtoHSB(int r, int g, int b, float[] hsbvals)<br />

public String toString( )<br />

}<br />

29


CLASSSS JJaavvaa. ..aawt t. ..Coomppoonneennt t<br />

Component es el Objeto <strong>de</strong> mas alto nivel en el AWT. Esto es tiene mucho material en este. Muchas <strong>de</strong> las<br />

clases en el AWT heredan <strong>de</strong>s<strong>de</strong> Component, tales como Button, Checkbox, TextField y algunos contenedores,<br />

incluyendo Panel y Frame, son algunos componentes, pero estos pue<strong>de</strong>n mantener Componentes.<br />

public abstract class Component implements ImageObserver, MenuContainer, Serializable {<br />

transient ComponentPeer peer; transient Container parent; int x;<br />

int y;<br />

int width;<br />

int height;<br />

Color foreground;<br />

Color background;<br />

Font font;<br />

Cursor cursor;<br />

protected Locale locale;<br />

boolean visible;<br />

boolean enabled;<br />

boolean valid;<br />

Vector popups;<br />

String name;<br />

public static final Object LOCK;<br />

Dimension minSize;<br />

Dimension prefSize;<br />

boolean newEventsOnly;<br />

ComponentListener componentListener;<br />

FocusListener focusListener;<br />

KeyListener keyListener;<br />

MouseListener mouseListener;<br />

MouseMotionListener mouseMotionListener;<br />

long eventMask;<br />

static boolean isInc;<br />

static int incRate;<br />

public static final float TOP ALIGNMENT;<br />

public static final float CENTER_ALIGNMENT;<br />

public static final float BOTTOM_ALIGNMENT;<br />

public static final float LEFT_ALIGNMENT;<br />

public static final float RIGHT_ALIGNMENT;<br />

public boolean action(Event evt, Object what)<br />

public synchronized void add(PopupMenu popup)<br />

public synchronized void addComponentListener<br />

public synchronized void addFocusListener(FocusListener 1)<br />

public synchronized void addKeyListener(KeyListener 1)<br />

public synchronized void addMouseListener(MouseListener 1)<br />

public synchronized void addMouseMotionListener(MouseMotionListener 1)<br />

public void addNotifyO public Rectangle bounds( )<br />

public int checkImage(Image image, ImageObserver observer)<br />

30


public int checklmage(Image image, int width, int height, ImageObserver observer)<br />

protected Component( )<br />

public boolean contains(int x, int y)<br />

public boolean contains(Point p)<br />

public Image createImage(ImageProducer producer)<br />

public Image createImage(int width, int height)<br />

public void <strong>de</strong>liverEvent(Event e)<br />

public void disable( )<br />

protected final void disableEvents(long eventsToDisable)<br />

public final void dispatchEvent(AWTEvent e)<br />

public void doLayout( )<br />

public void enable( )<br />

public void enable(boolean b)<br />

protected final void enableEvents(long eventsToEnable)<br />

boolean eventEnabled(AWTEvent e)<br />

public float getAlignmentX( )<br />

public float getAlignmentY( )<br />

public Color, getBackground( )<br />

public Rectangle getBounds( )<br />

public ColorMo<strong>de</strong>l getColorMo<strong>de</strong>l( )<br />

public Component getComponentAt(int x, int y)<br />

public Component getComponentAt(Point p)<br />

public Cursor getCursor( )<br />

public Font getFont( )<br />

public FontMetrics getFontMetrics(Font font)<br />

public Color getForeground( )<br />

public Graphics getGraphics( )<br />

public Locale getLocale( )<br />

public Point getLocation( )<br />

public Point getLocationOnScreen( public Dimension getMaximumSize( )<br />

public Dimension getMinimumSize( )<br />

public String getName( )<br />

Container getNativeContainer( )<br />

public Container getParent( )<br />

public ComponentPeer getPeer( )<br />

public Dimension getPreferredSize( )<br />

public Dimension getSize( )<br />

public Toolkit getToolkit( )<br />

public final Object getTreeLock( )<br />

public boolean gotFocus(Event evt, Object what)<br />

public boolean handleEvent(Event evt)<br />

public void hi<strong>de</strong>( )<br />

public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h)<br />

public boolean insi<strong>de</strong>(int x, int y)<br />

public void invalidate( )<br />

public boolean isEnabled( )<br />

public boolean isFocusTraversable( )<br />

31


public boolean isShowing( )<br />

public boolean isValid( )<br />

public boolean isVisible( )<br />

public boolean keyDown(Event evt, int key)<br />

public boolean keyUp(Event evt, int key)<br />

public void layout( )<br />

public void listo( )<br />

public void list(PrintStream out)<br />

public void list(PrintStream out, int in<strong>de</strong>nt)<br />

public void list(PrintWriter out)<br />

public void list(PrintWriter out, int in<strong>de</strong>nt)<br />

public Component locate(int x, int y)<br />

public Point location( )<br />

public boolean lostFocus(Event evt, Object what)<br />

public Dimension minimumSize( )<br />

public boolean mouseDown(Event evt, int x, int y)<br />

public boolean mouseDrag(Event evt, int x, int y)<br />

public boolean mouseEnter(Event evt, int x, int y)<br />

public boolean mouseExit(Event evt, int x, int y)<br />

public boolean mouseMove(Event evt, int x, int y)<br />

public boolean mouseUp(Event evt, int x, int y)<br />

public void move(int x, int y) public void nextFocus( )<br />

public void paint(Graphics g)<br />

public void paintAll(Graphics g)<br />

protected String paramString( )<br />

public boolean postEvent(Event e)<br />

boolean postsOldMouseEvents( )<br />

public Dimension preferredSize( )<br />

public boolean prepareImage(Image image, ImageObserver observer)<br />

public boolean prepareImage(Image image, int width, int height, ImageObserver observer)<br />

public void print(Graphics g)<br />

public void printAll(Graphics g)<br />

protected void processComponentEvent(ComponentEvent e)<br />

protected void pro cessEvent(AWTEvent e)<br />

protected void processFocusEyent(FocusEvent e)<br />

protected void processKeyEvent(KeyEvent e)<br />

protected void processMouseEvent(MouseEvent e)<br />

protected void processMouseMotionEvent(MouseEvent e)<br />

public synchronized void remove(MenuComponent popup)<br />

public synchronized void removeComponentListener<br />

public synchronized void removeFocusListener(FocusListener 1)<br />

public synchronized void removeKeyListener(KeyListener 1)<br />

public synchronized void removeMouseListener(MouseListener 1)<br />

public synchronized void removeMouseMotionListener(MouseMotionListener 1)<br />

public void removeNotify() public void repaint( )<br />

public void repaint(long tm)<br />

public void repaint(int x, int y, int width, int height)<br />

32


public void repaint(long tm, int x, int y, int width, int height)<br />

public void requestFocus( )<br />

public void reshape(int x, int y, int width, int height)<br />

public void resize(int width, int height)<br />

public void resize(Dimension d)<br />

public void setBackground(Color c)<br />

public void setBounds(int x, int y, int width, int height)<br />

public void setBounds(Rectangle r)<br />

public synchronized void setCursor(Cursor cursor)<br />

public void setEnabled(boolean b)<br />

public synchronized void setFont(Font f)<br />

public void setForeground(Color c)<br />

public void setLocale(Locale 1)<br />

public void setLocation(int x, int y)<br />

public void setLocation(Point p)<br />

public void setName(String name)<br />

public void setSize(int width, int height)<br />

public void setSize(Dimension d)<br />

public void setVisible(boolean b)<br />

public void show( )<br />

public void show(boolean b)<br />

public Dimension size( )<br />

public String toString( )<br />

public void transferFocus( public void update(Graphics g)<br />

public void valídate( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Coonnt taai inneerr<br />

Container es una clase abstracta usada para fijar componentes. Panels y Frames son contenedores, pero<br />

botones y Checkboxes no lo son. Pue<strong>de</strong>s crear una instancia <strong>de</strong> <strong>de</strong> container directamente; Tienes a esta subclase si<br />

la quieres usar. Muchos <strong>programadores</strong> usan contenedores(container) proporcionados en el API(Panel, Frame,,<br />

Dialog, y otros mas) y no crean el propio.<br />

public abstract class Container extends Component {<br />

int ncomponents;<br />

Component component[];<br />

LayoutManager layoutMgr;<br />

private LightweightDispatcher dispatcher;<br />

private Dimension maxSize;<br />

ContainerListener containerListener;<br />

private int containerSerializedDataVersion;<br />

public Component add(Component comp)<br />

public Component add(String name, Component comp)<br />

public Component add(Component comp, int ín<strong>de</strong>x)<br />

public void add(Component comp, Object constraints)<br />

public void add(Component comp, Object constraints, int in<strong>de</strong>x)<br />

33


public void addContainerListener(ContainerListener 1)<br />

protected void addImpl(Component comp, Object constraints, int in<strong>de</strong>x)<br />

public void addNotify( )<br />

protected Container( )<br />

public int countComponents( )<br />

public void <strong>de</strong>liverEvent(Event e)<br />

void dispatchEvent(AWTEvent e)<br />

public void doLayout( )<br />

boolean eventEnabled(AWTEvent e)<br />

public float getAlignmentX( )<br />

public float getAlignmentY( )<br />

public Component getComponent(int n)<br />

public Component getComponentAt(int x, int y)<br />

public Component getComponentAt(Point p)<br />

public int getComponentCount( )<br />

public Component[] getComponents( )<br />

public Insets getInsets( )<br />

public LayoutManager getLayout( )<br />

public Dimension getMaximumSize( )<br />

public Dimension getMinimumSize( )<br />

Component getMouseEventTarget(int x, int y)<br />

public Dimension getPreferredSize( )<br />

public Insets insets( )<br />

public void invalidote( )<br />

public boolean isAncestor0f(Component c)<br />

public void layout( )<br />

public void list(PrintStream out, int in<strong>de</strong>nt)<br />

public void list(PrintWriter out, int in<strong>de</strong>nt)<br />

public Component locate(int x, int y)<br />

public Dimension minimumSize( )<br />

void nextFocus(Component base)<br />

public void paint(Graphics g)<br />

public void paintComponents(Graphics g)<br />

protected String paramString( )<br />

void postProcessKeyEvent(KeyEvent e)<br />

boolean postsOldMouseEvents( public Dimension preferredSize )<br />

public void print(Graphics g)<br />

public void printComponents(Graphics g)<br />

protected void processContainerEvent(ContainerEvent e)<br />

protected void processEvent(AWTEvent e)<br />

void proxyEnableEvents(long events)<br />

void proxyRequestFocus(Component c)<br />

private void readObject(java.io.ObjectlnputStream s) throws java.lang.ClassNotFoundException,<br />

java.io.IOException<br />

public void remove(int in<strong>de</strong>x)<br />

public void remove(Component comp)<br />

public void removeAll( )<br />

34


public void removeContainerListener(ContainerListener 1)<br />

public void removeNotify( )<br />

void setFocusOwner(Component c)<br />

public void setLayout(LayoutManager mgr)<br />

void transferFocus(Component base)<br />

public void valídate( )<br />

protected void validateTree( )<br />

prívate void writeObject(java.io.ObjectOutputStream s) throws java.lang.ClassNotFoundException,<br />

java.io.IOException<br />

}<br />

CLASSSS JJaavvaa. .aawt t. ..Cuurrssoorr<br />

Cursor representa un cursor <strong>de</strong>l mouse. Pue<strong>de</strong>s especificarcursores para cada componente. Simplemente<br />

llamando a Component.setCursor() con el cursor que <strong>de</strong>seas.<br />

public class Cursor implements java.io.Serializable {<br />

public static final int DEFAULT_CURSOR;<br />

public static final int CROSSHAIR_CURSOR;<br />

public static final int TEXT CURSOR;<br />

public static final int WAIT_CURSOR;<br />

public static final int SW_RESIZE_CURSOR;<br />

public static final int SE_RESIZE_CURSOR;<br />

public static final int NW RESIZE CURSOR;<br />

public static final int NE_RESIZE_CURSOR;<br />

public static final int N_RESIZE_CURSOR;<br />

public static final int S RESIZE CURSOR;<br />

public static final int W_RESIZE_CURSOR;<br />

public static final int E RESIZE CURSOR;<br />

public static final int HAND_ CURSOR;<br />

public static final int MOVE CURSOR;<br />

protected static Cursor pre<strong>de</strong>fined[];<br />

int type;<br />

public Cursor(int type)<br />

static public Cursor getDefaultCursor( )<br />

static public Cursor getPre<strong>de</strong>finedCursor(int type)<br />

public int getType( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Di iaal loogg<br />

Le permite crear una caja <strong>de</strong> dialogo modal o cajas <strong>de</strong> dialogo modales. Una ban<strong>de</strong>ra booleana en el<br />

constructor <strong>de</strong>scribe el tipo. Pue<strong>de</strong>s especificar un marco padre cuando creas un cuadro <strong>de</strong> dialogo. Este pue<strong>de</strong> ser<br />

cualquier marco(Frame) en la aplicación.<br />

public class Dialog extends Window {<br />

boolean resizable;<br />

boolean modal; String title;<br />

WindowListener windowListener;<br />

35


public void addNotify( )<br />

public Dialog(Frame parent)<br />

public Dialog(Frame parent, boolean modal)<br />

public Dialog(Frame parent, String title)<br />

public Dialog(Frame parent, String title, boolean modal)<br />

boolean eventEnabled(AWTEvent e)<br />

public String getTitle( )<br />

public boolean isModal( )<br />

public boolean isResizable( )<br />

protected String paramString( )<br />

protected void processEvent(AWTEvent e)<br />

protected void processWindowEvent(WindowEvent e)<br />

public void setModal(boolean b)<br />

public synchronized void setResizable(boolean resizable)<br />

public synchronized void setTitle(String title)<br />

public void show( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. ..Di imeennssi ioonn<br />

Dimensión es un envoltorio para ancho y alto. El objeto dimensión aparece sobre todos los lugares para<br />

especificar el acho y alto.<br />

public class Dimension implements java.io.Serializable {<br />

public int width;<br />

public int height;<br />

public Dimension( )<br />

public Dimension(Dimension d)<br />

public Dimension(int width, int height)<br />

public boolean equals(Object obj)<br />

public Dimension getSize( )<br />

public void setSize(Dimension d)<br />

public void setSize(int width, int height)<br />

public String toString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Evveennt t<br />

Event mantiene toda la informacion contenida en un evento <strong>de</strong> usuario, tales como cuando el usuario<br />

presiona una tecla o mueve el mouse. Muchas <strong>de</strong> las veces recibes objetos <strong>de</strong> eventos <strong>de</strong> usuario <strong>de</strong>s<strong>de</strong> el entorno<br />

en tiempo <strong>de</strong> corrida, pero pue<strong>de</strong>s crear tus propios eventos y enviar estos a otros componentes.<br />

public class Event implements java.io.Serializable {<br />

public static final int SHIFT MASK;<br />

public static final int CTRL MASK;<br />

public static final int META_MASK;<br />

36


public static final int ALT_MASK;<br />

public static final int HOME;<br />

public static final int END;<br />

public static final int PGUP;<br />

public static final int PGDN;<br />

public static final int UP;<br />

public static final int DOWN;<br />

public static final int LEFT;<br />

public static final int RIGHT;<br />

public static final int F1;<br />

public static final int F2;<br />

public static final int F3;<br />

public static final int F4;<br />

public static final int F5;<br />

public static final int F6;<br />

public static final int F7;<br />

public static final int F8;<br />

public static final int F9;<br />

public static final int F10;<br />

public static final int F11;<br />

public static final ínt F12;<br />

public static final int PRINT SCREEN;<br />

public static final int SCROLL_LOCK;<br />

public static final int CAPSLOCK;<br />

public static final int NUM_LOCK;<br />

public static final int PAUSE;<br />

public static final int INSERT;<br />

public static final int ENTER;<br />

public static final int BACK_SPACE;<br />

public static final int TAB;<br />

public static final int ESCAPE;<br />

public static final int DELETE;<br />

public static final int WINDOW DESTROY;<br />

public static final int WINDOW_EXPOSE;<br />

public static final int WINDOW_ICONIFY;<br />

public static final int WINDOW_DEICONIFY;<br />

public static final int WINDOW_MOVED;<br />

public static final int KEY_PRESS;<br />

public static final int KEY_RELEASE;<br />

public static final int KEY ACTION;<br />

public static final int KEY ACTION_RELEASE;<br />

public static final int MOUSE_DOWN;<br />

public static final int MOUSE UP;<br />

public static final int MOUSE_MOVE;<br />

public static final int MOUSE ENTER;<br />

public static final int MOUSE_EXIT;<br />

public static final int MOUSE_DRAG;<br />

37


public static final int SCROLL LINE_UP;<br />

public static final int SCROLL_LINE_DOWN;<br />

public static final int SCROLL_PAGE_UP;<br />

public static final int SCROLL_PAGE_DOWN;<br />

public static final int SCROLLABSOLUTE;<br />

public static final int SCROLL BEGIN;<br />

public static final int SCROLL_END;<br />

public static final int LIST_SELECT;<br />

public static final int LIST_DESELECT;<br />

public static final int ACTIONEVENT;<br />

public static final int LOAD FILE;<br />

public static final int SAVE_FILE;<br />

public static final int GOT_FOCUS;<br />

public static final int LOST_FOCUS;<br />

public Object target;<br />

public long when;<br />

public int id;<br />

public int x;<br />

public int y;<br />

public int key;<br />

public int modifiers;<br />

public int clickCount;<br />

public Object arg;<br />

public Event evt; void consume( )<br />

public boolean controlDown( )<br />

public Event(Object target, long when, int id, int x, int y, int key, int modifiers, Object arg)<br />

public Event(Object target, long when, int id, int x, int y, int key, int modifiers)<br />

public Event(Object target, int id, Object arg)<br />

boolean isConsumed( )<br />

public boolean metaDown( )<br />

protected String paramString( )<br />

public boolean shiftDown( )<br />

public String toString( )<br />

public void translate(int x, int y)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Evveennt tDi issppaat tcchhThhrreeaadd<br />

EventDiapatchTread es un hilo que atrapa eventos y envía estos a otros componentes.<br />

class EventDispatchThread extends Thread {<br />

EventDispatchThread(String name)<br />

public void run( )<br />

public void stopDispatching( )<br />

}<br />

38


CLASSSS JJaavvaa. .aawt t. .Evveennt tQuueeuuee<br />

EventQueue Es una clase que encola eventos antes <strong>de</strong> que estos sean enviados a un componente.<br />

public class EventQueue {<br />

static EventQueue theEventQueue;<br />

public EventQueue( )<br />

public synchronized Object getNextEvent() throws InterruptedException<br />

public synchronized Object peekEvent( public synchronized Object peekEvent(int id)<br />

public synchronized void postEvent(Event theEvent)<br />

public synchronized void postEvent(AWTEvent theEvent)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..FFi il leeDi iaal loogg<br />

Crea un archivo recogedor <strong>de</strong> dialogo, creando una interface <strong>de</strong> usuario en un tiempo muy reducido. Es<br />

muy facil <strong>de</strong> usar. Simplemente cre una instancia <strong>de</strong> FileDialog, diga si este es un FileDialog modal,asi show( )<br />

muestra los blockes mientras el usuario completa la actividad, cuando este retorna, pue<strong>de</strong>s interrogar el objeto para<br />

<strong>de</strong>terminar que archivo fue seleccionado.<br />

public class FileDialog extends Dialog {<br />

public static final int LOAD;<br />

public static final int SAVE;<br />

int mo<strong>de</strong>;<br />

String dir;<br />

String file;<br />

FilenameFilter filter;<br />

public void addNotify( )<br />

public FileDialog(Frame parent)<br />

public FileDialog(Frame parent, String title)<br />

public FileDialog(Frame parent, String title, int mo<strong>de</strong>)<br />

public String getDirectory( )<br />

public String getFile( )<br />

public FilenameFilter getFilenameFilter( )<br />

public int getMo<strong>de</strong>( )<br />

protected String paramString( )<br />

boolean postsOldMouseEvents( )<br />

public synchronized void setDirectory(String dir)<br />

public synchronized void setFile(String file)<br />

public synchronized void setFilenameFilter(FilenameFilter filter)<br />

public void setMo<strong>de</strong>(int mo<strong>de</strong>)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .FFl loowLaayyoouut t<br />

Es el mas basico <strong>de</strong> los manejadores. Las posiciones <strong>de</strong> los componentes izquierda a <strong>de</strong>recha, centrando<br />

estos tanto como sea posible. Pue<strong>de</strong>s encontrar FlowLayout muy util para prototipos rapidoscuando el diseño<br />

sofisticado no es una proriedad.<br />

39


public class FlowLayout implements LayoutManager, java.io.Serializable {<br />

public static final int LEFT;<br />

public static final int CENTER;<br />

public static final int RIGHT;<br />

int align;<br />

int hgap;<br />

int vgap;<br />

public void addLayoutComponent(String nace, Component comp)<br />

public FlowLayout( )<br />

public F1owLayout(int align)<br />

public F1owLayout(int align, int hgap, int vgap)<br />

public int getAlignment() public int getHgap( )<br />

public int getVgap( )<br />

public void layoutContainer(Container target)<br />

public Dimension minimumLayoutSize(Container target)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .FFoonnt t<br />

Los Objetos Font son usados cuando ponemos las Fuentes para un Objeto grafico grapfico en un<br />

componenteen un metodo <strong>de</strong> componentes Paint.<br />

public class Font implements java.io.Serializable {<br />

public static final int PLAIN;<br />

public static final int BOLD;<br />

public static final int ITALIC;<br />

protected String nace;<br />

protected int style;<br />

protected int size;<br />

transient FontPeer peer;<br />

public static Font <strong>de</strong>co<strong>de</strong>(String str)<br />

public boolean equals(Object obj)<br />

public Font(String name, int style, int size)<br />

public String getFamily( )<br />

public static Font getFont(String nm)<br />

public static Font getFont(String nm, Font font)<br />

public String getName( )<br />

public FontPeer getPeer( )<br />

public int getSize( )<br />

public int getStyle( )<br />

public int hashCo<strong>de</strong>( )<br />

public boolean isBold( )<br />

public boolean isltalic( )<br />

public boolean isPlain( )<br />

public String toString( )<br />

private void writeObject(java.io.ObjectOutputStream s) throws java.lang.ClassNotFoundException,<br />

java.io.IOException<br />

}<br />

40


CLASSSS JJaavvaa. .aawt t. .FFoonnt tMeet trri iccss<br />

Obtiene informacion acerca <strong>de</strong> una fuente, tales como Fuentes gran<strong>de</strong>s, ascensión, <strong>de</strong>scension, y otras mas. A<br />

menudo viene habilitado cuando usamos Graphics.drawString( ) en el dibujado <strong>de</strong> texto. <strong>Para</strong> usar esta clase<br />

simplemente una nueva instancia con la fuente <strong>de</strong> interes como un parámetro para el constructor.<br />

public class Font implements java.io.Serializable {<br />

public static final int PLAIN;<br />

public static final int BOLD;<br />

public static final int ITALIC;<br />

protected String nace;<br />

protected int style;<br />

protected int size;<br />

transient FontPeer peer;<br />

public static Font <strong>de</strong>co<strong>de</strong>(String str)<br />

public boolean equals(Object obj)<br />

public Font(String name, int style, int size)<br />

public String getFamily( )<br />

public static Font getFont(String nm)<br />

public static Font getFont(String nm, Font font)<br />

public String getName( )<br />

public FontPeer getPeer( )<br />

public int getSize( )<br />

public int getStyle( )<br />

public int hashCo<strong>de</strong>( )<br />

public boolean isBold( )<br />

public boolean isltalic( )<br />

public boolean isPlain( )<br />

public String toString( )<br />

private void writeObject(java.io.ObjectOutputStream s) throws java.lang.ClassNotFoundException,<br />

java.io.IOException<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..FFrraamee<br />

Crea una ventana con una barra <strong>de</strong> titulo. Se podria preguntar: Si todo en los Frame es bueno para que,<br />

porque no simplemente crear una ventana?, Window es la superclase <strong>de</strong> Frame, pue<strong>de</strong>s crear una instancia <strong>de</strong><br />

window por varias razones que son mas complecadas <strong>de</strong> explicar aquí. Es bastante confuso slo tenga confianza en<br />

uno. El manejador <strong>de</strong> diseño por <strong>de</strong>fault para Frame, y todas las subclases <strong>de</strong> ventanas para esta matera, es<br />

Bor<strong>de</strong>rLayout. Sin embargo ciertamente lo <strong>de</strong>bes establecer.<br />

public class Frame extends Window implements MenuContainer {<br />

public static final int DEFAULT_CURSOR;<br />

public static final int CROSSHAIR_CURSOR;<br />

public static final int TEXT CURSOR;<br />

public static final int WAIT_CURSOR;<br />

public static final int SW_RESIZE_CURSOR;<br />

public static final int SE_RESIZE_CURSOR;<br />

public static final int NW_RESIZE_CURSOR;<br />

41


public static final int NE_RESIZE_CURSOR;<br />

public static final int N_RESIZE_CURSOR;<br />

public static final int S_RESIZE_CURSOR;<br />

public static final int W_RESIZE_CURSOR;<br />

public static final int E RESIZE_CURSOR;<br />

public static final int HAND-CURSOR;<br />

public static final int MOVE CURSOR;<br />

String title;<br />

Image icon;<br />

MenuBar menuBar;<br />

boolean resizable;<br />

Vector ownedWindows;<br />

WindowListener windowListener;<br />

public void addNotify( )<br />

Window addOwnedWindow(Window window)<br />

public synchronized void dispose( )<br />

boolean eventEnabled(AWTEvent e)<br />

public Frame( )<br />

public Frame(String title)<br />

public int getCursorType( )<br />

public Image getlconImage( )<br />

public MenuBar getMenuBar( )<br />

public String getTitle( )<br />

public boolean isResizable( )<br />

protected String paramString( )<br />

void postProcessKeyEvent(KeyEvent e)<br />

protected void processEvent(AWTEvent e)<br />

protected void processWindowEvent(WindowEvent e)<br />

public synchronized void remove(MenuComponent m)<br />

void removeOwnedWindow(Window window)<br />

public synchronized void setCursor(int cursorType)<br />

public synchronized void setIconlmage(Image image)<br />

public synchronized void setMenuBar(MenuBar mb)<br />

public synchronized void setResizable(boolean resizable)<br />

public synchronized void setTitle(String title)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Grraapphhi iccss<br />

La magia <strong>de</strong> los Objetos graficos. Que pue<strong>de</strong>s crear <strong>de</strong>bido a la abstracción. Si pue<strong>de</strong>s crear uno, entonces<br />

pu<strong>de</strong>s obtener uno? Pue<strong>de</strong>s obtener un componente grafico en una pintura o actualizar metodos. Pue<strong>de</strong>s tambien<br />

obtener un graphics <strong>de</strong>s<strong>de</strong> un Objeto Imagen llamándolo Image.getGraphics. Este es <strong>de</strong> rendimiento fuera <strong>de</strong> la<br />

pantalla usando el doble buffer.<br />

public abstract class Graphics {<br />

public abstract void clearRect(int x, int y, int width, int height);<br />

public abstract void clipRect(int x, int y, int width, int height);<br />

42


public abstract void copyArea(int x, int y, int width, int height, int dx, int dy);<br />

public abstract Graphics create( );<br />

public Graphics create(int x, int y, int width, int height)<br />

public abstract void dispose( );<br />

public void draw3DRect(int x, int y, int width, int height, boolean raised)<br />

public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle);<br />

public void drawBytes(byte data[], int offset, int length, int x, int y)<br />

public void drawChars(char data[], int offset, int length, int x, int y)<br />

public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer);<br />

public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver<br />

observer);<br />

public abstract boolean drawImage(Image ¡mg, int x, int y, Color bgcolor, ImageObserver observer);<br />

public abstract boolean drawImage(Image img, int x, int y, Int width, int height, Color bgcolor,<br />

ImageObserver observer);<br />

public abstract boolean drawImage(Image img, int dxl, int dy1, int dx2, int dy2, int sxl, int sy1, int sx2, int<br />

sy2, ImageObservdrawimage<br />

public abstract boolean drawImage(Image img, int dxl, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int<br />

sy2, Color bgcoldrawimage<br />

public abstract void drawLine(int x1, int y1, int x2, int y2);<br />

public abstract void drawOval(int x, int y, int width, int height);<br />

public abstract void drawPolygon(int xPoints[], int yPoints[], int nPoints);<br />

public void drawPolygon(Polygon p)<br />

public abstract void drawPolyline(int xPoints[], int yPoints[], int nPoints);<br />

public void drawRect(int x, int y, int width, int height)<br />

public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);<br />

public abstract void drawString(String str, int x, int y);<br />

public void fi113DRect(int x, int y, int width, int height, boolean raised)<br />

public abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle);<br />

public abstract void fillOval(int x, int y, int width, int height);<br />

public abstract void fillPolygon(int xPoints[], int yPoints[], int nPoints);<br />

public void fillPolygon(Polygon p)<br />

public abstract void fillRect(int x, int y, int width, int height);<br />

public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);<br />

public void finalize( )<br />

public abstract Shape getClip( );<br />

public abstract Rectangle getClipBounds( ) ;<br />

public Rectangle getClipRect( )<br />

public abstract Color getColor( );<br />

public abstract Font getFont( );<br />

public FontMetrics getFontMetrics( )<br />

public abstract FontMetrics getFontMetrics(Font f);<br />

protected Graphicsl( )<br />

public abstract void setClip(int x, int y, int width, int height);<br />

public abstract void setClip(Shape clip);<br />

public abstract void setColor(Color c);<br />

public abstract void setFont(Font font);<br />

public abstract void setPaintMo<strong>de</strong>( );<br />

43


public abstract void setXORMo<strong>de</strong>(Color cl);<br />

public String toString( )<br />

public abstract void translate(int x, int y);<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Grri iddBaaggCoonnsst trraai innt tss<br />

Es usada en conjunsion con GridBagLayout para configurar constraints para un componente antes <strong>de</strong> que<br />

el componente sea agregado a un contenedor. Muchos constraints pue<strong>de</strong>n interactuar con muchos otros en muchas<br />

formas teniendo algunas funciones.<br />

public class GridBagConstraints implements Cloneable, java.io.Serializable {<br />

public static final int RELATIVE;<br />

public static final int REMAINDER;<br />

public static final int NONE;<br />

public static final int BOTH;<br />

public static final int HORIZONTAL;<br />

public static final int VERTICAL;<br />

public static final int CENTER;<br />

public static final int NORTH;<br />

public static final int NORTHEAST;<br />

public static final int EAST;<br />

public static final int SOUTHEAST;<br />

public static final int SOUTH;<br />

public static final int SOUTHWEST;<br />

public static final int WEST;<br />

public static final int NORTHWEST;<br />

public int gridx, gridy, gridwidth, gridheight;<br />

public double weightx, weighty;<br />

public int anchor, fill;<br />

public Insets insets;<br />

public int ipadx, ipady;<br />

int tempX, tempY;<br />

int tempWidth, tempHeight;<br />

int minWidth, minHeight;<br />

public Object clone( )<br />

public GridBagConstraints()<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .Grri iddBaaggLaayyoouut tIInnf foo<br />

Proprciona informacion para GridBagLayout. No es publico, no pue<strong>de</strong>s usarlo a menos que estes en el<br />

packete awt. Que mas o menos le hace improbable eso, usted tendra que usar mucho GridBagLayoutInfo.<br />

class GridBagLayoutlnfo implements java.io.Serializable {<br />

int width, height;<br />

int startx, starty;<br />

int minWidth[];<br />

44


int minHeight[];<br />

double weightX[];<br />

double weightY[];<br />

GridBagLayoutlnfo( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .Grri iddBaaggLaayyoouut t<br />

El mas flexible contenedor <strong>de</strong> todos los menejadores <strong>de</strong> diseño, es muy complicado la <strong>de</strong>scripción para<br />

usarse efectivamente se <strong>de</strong>scribe aquí. Si esres maestro usando GridBagLayout, pue<strong>de</strong>s crear impresionantes<br />

diseños. Use GridBagLayout con precaución.<br />

public class GridBagLayout implements LayoutManager2, java.io.Serializable {<br />

protected static final int MAXGRIDSIZE;<br />

protected static final int MINSIZE;<br />

protected static final int PREFERREDSIZE;<br />

protected Hashtable comptable;<br />

protected GridBagConstraints <strong>de</strong>faultConstraints;<br />

protected GridBagLayoutlnfo layoutlnfo;<br />

public int columnWidths[];<br />

public int rowHeights[];<br />

public double columnWeights[];<br />

public double rowWeights[]:<br />

public void addLayoutComponent(String name, Component comp)<br />

public void addLayoutComponent(Component comp, Object constraints)<br />

protected void AdjustForGravity(GridBagConstraints con straints, Rectangle r)<br />

protected void ArrangeGrid(Container parent)<br />

public GridBagConstraints getConstraints(Component comp)<br />

public float getLayoutAlignmentX(Container parent)<br />

public float getLayoutAlignmentY(Container parent)<br />

public int [][] getLayoutDimensions( )<br />

protected GridBagLayoutlnfo GetLayoutlnfo(Container parent, int sizeflag)<br />

public Point getLayoutOrigin( )<br />

public double [][] getLayoutWeights( )<br />

protected Dimension GetMinSize(Container parent, GridBagLayoutlnfo info)<br />

public GridBagLayout( )<br />

public void invalidateLayout(Container target)<br />

public void layoutContainer(Container parent)<br />

public Point location(int x, int y)<br />

protected GridBagConstraints lookupConstraints(Component comp)<br />

public Dimension maximumLayoutSize(Container target)<br />

public Dimension minimumLayoutSize(Container parent)<br />

public Dimension preferredLayoutSize(Container parent)<br />

public void removeLayoutComponent(Component comp)<br />

public void setConstraints(Component comp, GridBagConstraints constraints)<br />

public String toString( )<br />

}<br />

45


CLASSSS JJaavvaa. ..aawt t. ..Grri iddLaayyoouut t<br />

Use GridLayout cuando necesite posicionar varios componentes en una rejilla. <strong>Para</strong> usar GriLayout, cree un<br />

objeto GrifLayout con el numero <strong>de</strong> renglones y columnas que <strong>de</strong>see y luego agregue componentes a el<br />

contenedor. Agregue los componentes <strong>de</strong> izquierda a <strong>de</strong>recha, y <strong>de</strong> arriba a bajo.<br />

Cuando crea un GridLayout, sea cuidadoso cuando agregue muchos componentes. El manejador <strong>de</strong> diseño tien<strong>de</strong> a<br />

confundirse si no agrega el numero correcto <strong>de</strong> componentes. Por ejemplo si tiene un grid <strong>de</strong> 3x3, asegúrese <strong>de</strong><br />

agregar nueve componentes.<br />

public class GridLayout implements LayoutManager, java.io.Serializable {<br />

int hgap;<br />

int vgap; int rows; int cols;<br />

public void addLayoutComponent(String name, Component comp)<br />

public int getColumns( )<br />

public int getHgap( )<br />

public int getRows( )<br />

public int getVgap( )<br />

public GridLayout( )<br />

public GridLayout(int rows, int cols)<br />

public GridLayout(int rows, int cols, int hgap, int vgap)<br />

public void layoutContainer(Container parent)<br />

public Dimension minimumLayoutSize(Container parent)<br />

public Dimension preferredLayoutSize(Container parent)<br />

public void removeLayoutComponent(Component comp)<br />

public void setColumns(int cols) public void setVgap(int hgap)<br />

public void setRows(int rows) public void setVgap(int vgap)<br />

public String toString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .IImaaggee<br />

Image es una <strong>de</strong> las rezones por las que Java se ha convertido en el éxito <strong>de</strong>l momento. Pu<strong>de</strong>s crear una<br />

imagen directamente <strong>de</strong>vido a que esta es abstracta. Muchas <strong>de</strong> las veces, muchas <strong>de</strong> las veces pue<strong>de</strong>s obtener una<br />

imagen algunas veces usando getImage. Pue<strong>de</strong>s tambien crear una imagen usando valores <strong>de</strong> píxel.<br />

public abstract class Image implements java.io.Serializable {<br />

public static final Object Un<strong>de</strong>finedProperty;<br />

public static final int SCALE DEFAULT;<br />

public static final int SCALE_FAST;<br />

public static final int SCALE_SM00TH;<br />

public static final int SCALE_REPLICATE;<br />

public static final int SCALE_AREA AVERAGING;<br />

public Image getscaledinstance(int width, int height, int hints)<br />

public abstract void flush( );<br />

public abstract Graphics getGraphicso;<br />

public abstract int getHeight(ImageObserver observer);<br />

public abstract Object getProperty(String name, ImageObserver observer);<br />

public abstract ImageProducer getSource( );<br />

public abstract int getWidth(ImageObserver observer); }<br />

46


CLASSSS JJaavvaa. ..aawt t. ..IInnsseet tss<br />

Es una pequeña clase curiosa usada para agregar espacios entre componentes en un contenedor. Ofrece<br />

entrar en conjunción con GridBagLayot.<br />

public class Insets implements Cloneable, java.io.Serializable {<br />

public int top; public int left;<br />

public int bottom;<br />

public int right;<br />

public Object clone( )<br />

public boolean equals(Object obj)<br />

public Insets(int top, int left, int bottom, int right)<br />

public String toString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .IIt teemSSeel leecct taabbl lee<br />

Es una interfaz usada por clases que pue<strong>de</strong>n sostener una o más opciones seleccionables. La clase<br />

implementa esta interfaz.<br />

public interface ItemSelectable {<br />

public void addItemListener(ItemListener 1);<br />

public Object[] getSelectedObjects( );<br />

public void removeItemListener(ItemListener 1);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .Laabbeel l<br />

Un componente Label, simplemente pue<strong>de</strong> <strong>de</strong>splegar texto en una simple linea. Pue<strong>de</strong> hacer lo mismo<br />

usando eficazmente Graphics. Funciona como cualquier otro componente solo agréguelo a un contenedor.<br />

public class Label extends Component {<br />

public static final int LEFT;<br />

public static final int CENTER;<br />

public static final int RIGHT;<br />

String text;<br />

int alignment;<br />

public void addNotify( )<br />

public int getAlignment( )<br />

public String getText() public Label( )<br />

public Label(String text)<br />

public Label(String text, int alignment)<br />

protected String paramString( )<br />

public synchronized void setAlignment(int alignment)<br />

public synchronized void setText(String text)<br />

}<br />

47


CLASSSS JJaavvaa. ..aawt t. ..Laayyoouut tMaannaaggeerr<br />

Si usted alguna vez quiere crear su propio LayoutManager, implemente esta clase. Por otra parte, usted realmente<br />

no necesita preocuparse por LayoutManager. Básicamente, todos los LayoutsManagers (tales como FlowLayout y<br />

GridaLayout) <strong>de</strong>be implementar esta interfaz y sobreescribir los métodos.<br />

public interface LayoutManager {<br />

void addLayoutComponent(String nace, Component comp);<br />

void layoutContainer(Container parent);<br />

Dimension minimumLayoutSize(Container parent);<br />

Dimension preferredLayoutSize(Container parent);<br />

void removeLayoutComponent(Component comp);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .Laayyoouut tMaannaaggeerr22<br />

De paso a la continuación para LayoutMananger. Esta interfaz extien<strong>de</strong> LayoutManager para tratar con<br />

LayoutManagers con el objeto constreñimiento. Es útil cuando usted quiere crear manejadores <strong>de</strong> diseño avanzados<br />

como GridBagLayout. A menos que usted se un superheroe <strong>de</strong> la programación-Java, usted probablemente no<br />

usará <strong>de</strong>masiado a menudo esta interfaz.<br />

public interface LayoutManager2 extends LayoutManager {<br />

void addLayoutComponent(Component comp, Object constraints);<br />

public float getLayoutAlignmentX(Container target);<br />

public float getLayoutAlignmentY(Container target);<br />

public void invalidateLayout(Container target);<br />

public Dimension maximumLayoutSize(Container target);<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Li isst t<br />

Lista, un componente <strong>de</strong> caja-lista, se parece a un juego <strong>de</strong> ítems <strong>de</strong> texto <strong>de</strong> seleccion. Usted pue<strong>de</strong> especificar<br />

cuántos items se <strong>de</strong>spliegan en un momento y si más <strong>de</strong> un Item pue<strong>de</strong>n seleccionarse.<br />

public class List extends Component implements ItemSelectable {<br />

Vector items;<br />

int rows;<br />

boolean multipleMo<strong>de</strong>;<br />

int selected[];<br />

int visibleIn<strong>de</strong>x;<br />

ActionListener actionListener;<br />

ItemListener itemListener;<br />

final static int DEFAULT_VISIBLE_ROWS;<br />

public void add(String item)<br />

public synchronized void add(String item, int in<strong>de</strong>x)<br />

public void addActionListener(ActionListener 1)<br />

public void addltem(String item)<br />

public synchronized void addltem(String item, int in<strong>de</strong>x)<br />

public void addltemListener(ItemListener 1)<br />

48


public void addNotify( )<br />

public boolean allowsMultipleSelections( )<br />

public synchronized void clear( )<br />

public int countltems( )<br />

public synchronized void <strong>de</strong>lltem(int position)<br />

public synchronized void <strong>de</strong>lltems(int start, int end)<br />

public synchronized void <strong>de</strong>select(int in<strong>de</strong>x)<br />

boolean eventEnabled(AWTEvent e)<br />

public String getltem(int in<strong>de</strong>x)<br />

public int getltemCount( )<br />

public synchronized String[] getltems( )<br />

public Dimension getMinimumSize(int rows)<br />

public Dimension getMinimumSize( )<br />

public Dimension getPreferredSize(int rows)<br />

public Dimension getPreferredSize( )<br />

public int getRows( )<br />

public synchronized int getSelectedln<strong>de</strong>x( )<br />

public synchronized int[] getSelectedln<strong>de</strong>xes( )<br />

public synchronized String getSelectedltem( )<br />

public synchronized String[] getSelectedltems( )<br />

public Object[] getSelectedObjects( )<br />

public int getVisibleln<strong>de</strong>x( )<br />

public boolean isln<strong>de</strong>xSelected(int in<strong>de</strong>x)<br />

public boolean isMultipleMo<strong>de</strong>( )<br />

public boolean isSelected(int in<strong>de</strong>x)<br />

public Listo( )<br />

public List(int rows)<br />

public List(int rows, boolean multipleMo<strong>de</strong>)<br />

public synchronized void makeVisible(int in<strong>de</strong>x)<br />

public Dimension minimumSize(int rows)<br />

public Dimension minimumSize( )<br />

protected String paramString( )<br />

public Dimension preferredSize(int rows)<br />

public Dimension preferredSize( )<br />

protected void processActionEvent(ActionEvent e)<br />

protected void processEvent(AWTEvent e)<br />

protected void processltemEvent(ItemEvent e)<br />

public synchronized void remove(String item)<br />

public synchronized void remove(int position)<br />

public void removeActionListener(ActionListener 1)<br />

public synchronized void removeAll( )<br />

public void removeltemListener(ItemListener 1)<br />

public void removeNotify( )<br />

public synchronized void replaceltem(String newValue, int in<strong>de</strong>x)<br />

public synchronized void select(int in<strong>de</strong>x)<br />

public synchronized void setMultipleMo<strong>de</strong>(boolean b)<br />

public synchronized void setMultipleSelections(boolean b)<br />

49


private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Meeddi iaaTrraacckkeerr<br />

Normalmente, Images es <strong>de</strong>scargado asincrónicamente <strong>de</strong>s<strong>de</strong> una red para que usted no tenga que esperar<br />

por ello. A veces, sin embargo, usted pue<strong>de</strong> querer esperar por un 1 Imagen antes <strong>de</strong> que usted siga - por ejemplo,<br />

antes <strong>de</strong> algunas salidas <strong>de</strong> la animación. Usted podría crear una clase que lleva a cabo un Consumidor y podría<br />

mirar pasar los pedazos, mientras notando cuando los acabados <strong>de</strong>l traslado. Afortunadamente, Sun Microsystems<br />

ha hecho esto para usted en el formulario <strong>de</strong> Media Tracker.<br />

<strong>Para</strong> usar la clase, cree una instancia <strong>de</strong> Media Tracker, agregue un objeto imagen<br />

con un número <strong>de</strong> i<strong>de</strong>ntificación arbitrario, y llama a waitForld(). Entonces el waitForld( ) volverá cuando la<br />

Imagen haya sido completamente transmitido.<br />

public class MediaTracker implements java.io.Serializable {<br />

Component target;<br />

MediaEntry head;<br />

public static final int LOADING;<br />

public static final int ABORTED;<br />

public static final int ERRORED;<br />

public static final int COMPLETE;<br />

static final int DONE;<br />

public void addlmage(Image image, int id)<br />

public synchronized void addlmage(Image image, int id, int w, int h)<br />

public boolean checkAll( )<br />

public synchronized boolean checkAll(boolean load)<br />

public boolean checklD(int id)<br />

public synchronized boolean checklD(int id, boolean load)<br />

public synchronized Object[] getErrorsAny( )<br />

public synchronized Object[] getErrorslD(int id)<br />

public synchronized boolean isErrorAny( )<br />

public synchronized boolean isErrorID(int id)<br />

public MediaTracker(Component comp)<br />

public synchronized void removelmage(Image image)<br />

public synchronized void removelmage(Image image, int id)<br />

public synchronized void removelmage(Image image, int id, int width, int height)<br />

synchronized void setDone( )<br />

public synchronized int statusAll(boolean load)<br />

public synchronized int statuslD(int id, boolean load)<br />

public void waitForAll( ) throws InterruptedException<br />

public synchronized boolean waitForAll(long ms) throws InterruptedException<br />

public void waitForID(int id) throws InterruptedException<br />

public synchronized boolean waitForID(int id, long ms) throws InterruptedException<br />

}<br />

50


CLASSSS JJaavvaa. ..aawt t. ..Meennuu<br />

Menú es que una <strong>de</strong> tres clases para crear los menús en un Frame. (Las otras clases son MenuBa r y<br />

Menultem (o CheckboxMenu Item)). los Menús no son Componentes, e estos no pue<strong>de</strong>n agregarse a Containers.<br />

Se agregan a las Barras <strong>de</strong> Menu, y los MenuItem se agregan a los menu. Los menu también pue<strong>de</strong>n agregarse los<br />

Menús para crear los menús en forma <strong>de</strong> cascada.<br />

public class Menu extends Menultem implements MenuContainer {<br />

Vector items;<br />

boolean tearOff;<br />

boolean isHelpMenu;<br />

public synchronized Menultem add(Menultem mi)<br />

public void add(String label) public void addNotify( )<br />

public void addSeparator() public int countltems( )<br />

void <strong>de</strong>leteShortcut(MenuShortcut s)<br />

public Menultem getltem(int in<strong>de</strong>x)<br />

public int getltemCount( )<br />

Menultem getShortcutMenultem(MenuShortcut s)<br />

boolean handleShortcut(KeyEvent e)<br />

public synchronized void insert(Menultem menuitem, int in<strong>de</strong>x)<br />

public void insert(String label, int in<strong>de</strong>x)<br />

public void insertSeparator(int in<strong>de</strong>x)<br />

public boolean isTearOff() public Menu( )<br />

public Menu(String label)<br />

public Menu(String label, boolean tearOff)<br />

public String paramString( )<br />

public synchronized void remove(int in<strong>de</strong>x)<br />

public synchronized void remove(MenuComponent item)<br />

public synchronized void removeAll( )<br />

public void removeNotify( )<br />

synchronized Enumeration shortcuts( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .MeennuuBaarr<br />

Un Marco pue<strong>de</strong> sostener una Barra <strong>de</strong> menú, que aparece arriba <strong>de</strong> un marco para usar la Barra <strong>de</strong> menú,<br />

cree una instancia <strong>de</strong> él y agregúelo a un marco llamando a Frame.setMenuBar.<br />

public class MenuBar extends MenuComponent implements MenuContainer {<br />

Vector menus;<br />

Menu helpMenu;<br />

public synchronized Menu add(Menu m)<br />

public void addNotify( )<br />

public int countMenus( )<br />

public void <strong>de</strong>leteShortcut(MenuShortcut s)<br />

public Menu getHelpMenu( )<br />

public Menu getMenu(int i)<br />

public int getMenuCount( )<br />

51


public Menultem getShortcutMenuItem(MenuShortcut s)<br />

boolean handleShortcut(KeyEvent e)<br />

public MenuBar( )<br />

public synchronized void remove(int in<strong>de</strong>x)<br />

public synchronized void remove(MenuComponent m)<br />

public void removeNotify( )<br />

public synchronized void setHelpMenu(Menu m)<br />

public synchronized Enumeration shortcuts( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .MeennuuCoomppoonneennt t<br />

MenuComponent es la superclass <strong>de</strong> los objetos Menú. Es abstracto, y no pue<strong>de</strong> crear una instancia<br />

directamente <strong>de</strong> el. Usted probablemente no tendrá que tratar con MenuComponent a menos que planee crear sus<br />

propios Items <strong>de</strong> menú.<br />

public abstract class MenuComponent implements java.io.Serializable {<br />

transient MenuComponentPeer peer;<br />

transient MenuContainer parent;<br />

Font font;<br />

String name;<br />

boolean newEventsOnly;<br />

void dispatchEvent(AWTEvent e) boolean eventEnabled(AWTEvent e)<br />

public Font getFont( public String getName( )<br />

public MenuContainer getParent( )<br />

public MenuComponentPeer getPeer( )<br />

protected String paramString() public boolean postEvent(Event evt)<br />

protected void processEvent(AWTEvent e)<br />

public void removeNotify( )<br />

public void setFont(Font f)<br />

public void setName(String name)<br />

public String toString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..MeennuuCoonnt taai inneerr<br />

Bienvenido a MenuContainer, una interfaz usada con los Menús. A menos que usted quiera crear su propio<br />

tipo <strong>de</strong> Menú, sentimos <strong>de</strong>cirle que usted no tendrá mucho uso para MenuContainer. Pero tomaremos un atisbo a<br />

él, sólo en caso <strong>de</strong> que usted lo necesite a algún punto.<br />

public interface MenuContainer {<br />

Font getFont() ;<br />

boolean postEvent(Event evt);<br />

void remove(MenuComponent comp);<br />

}<br />

52


CLASSSS JJaavvaa. .aawt t. .MeennuuIIt teem<br />

MenuItem crea el Item actual que un usuario selecciona <strong>de</strong> un Menú. (Vea "java.awtCheckboxMenultem"<br />

en esta parte si usted quiere un CheckboxinyourMenultem.) apoyese en los atajos <strong>de</strong> teclado. <strong>Para</strong> crear un<br />

MenuItem, simplemente cree un Instancia <strong>de</strong> MenuItemand y agregúelo a un Menú.<br />

public class MenuItem extends MenuComponent {<br />

boolean enabled;<br />

String label;<br />

String actionCommand;<br />

long eventMask;<br />

ActionListener actionListener;<br />

public void addActionListener(ActionListener 1)<br />

public void addNotify( )<br />

public void <strong>de</strong>leteShortcut( )<br />

void <strong>de</strong>leteShortcut(MenuShortcut s)<br />

public synchronized void disable( )<br />

protected final void disableEvents(long eventsToDisable)<br />

public synchronized void enable( )<br />

public void enable(boolean b)<br />

protected final void enableEvents(long eventsToEnable)<br />

boolean eventEnabled(AWTEvent e)<br />

public String getActionCommand( )<br />

public String getLabel( )<br />

public MenuShortcut getShortcut( )<br />

Menultem getShortcutMenuItem(MenuShortcut s)<br />

boolean handleShortcut(KeyEvent e)<br />

public boolean isEnabled( )<br />

public MenuItem( )<br />

public Menultem(String label)<br />

public Menultem(String label, MenuShortcut s)<br />

public String paramString( )<br />

protected void processActionEvent(ActionEvent e)<br />

protected void processEvent(AWTEvent e)<br />

public void removeActionListener(ActionListener 1)<br />

public void setActionCommand(String command)<br />

public synchronized void setEnabled(boolean b)<br />

public synchronized void setLabel(String label)<br />

public void setShortcut(MenuShortcut s)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..MeennuuSShhoorrt tccuut t<br />

Si usted alguna vez se preguntara <strong>de</strong> qué clase se crea los atajos <strong>de</strong>l teclado para losMenuItems, entonces<br />

haga una extensa investigasion <strong>de</strong> MenuShortcut.<br />

public class MenuShortcut implements Serializable {<br />

public boolean equals(MenuShortcut s)<br />

public int getKey( )<br />

53


protected String paramString( )<br />

public String toString( )<br />

public boolean usesShiftModifier( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..PPaanneel l<br />

Usted pue<strong>de</strong> usar Panel, una área rectangular, un contenedor para dibujar o agregar los Componentes.<br />

Porque Panel es un recipiente, la mayoría <strong>de</strong>l tiempo, usted usa el Panelagregar agrupar los Componentes. Usted<br />

pue<strong>de</strong> notar las similitu<strong>de</strong>s entre el Panelero y Canvas, pero el Panel es un Contenedor y Canvas no lo es. El<br />

administrador <strong>de</strong> diseño pre<strong>de</strong>finido para el Panel (y todas las subclasses, como Applet) es FlowLayout.<br />

public class Panel extends Container {<br />

final static LayoutManager panelLayout;<br />

public void addNotify( )<br />

public Panel( )<br />

public Panel(LayoutManager layout)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .PPooi innt t<br />

A veces usted pue<strong>de</strong> necesitar una clase simple para sostener una X y Y coor<strong>de</strong>nada. Introduzca el punto<br />

para hacer simplemente eso.<br />

public class Point implements java.io.Serializable {<br />

public int x;<br />

public int y;<br />

public boolean equals(Object obj)<br />

public Point getLocation( )<br />

public int hashCo<strong>de</strong>( )<br />

public void move(int x, int y)<br />

public Point( )<br />

public Point(Point p)<br />

public Point(int x, int y)<br />

public void setLocation(Point p)<br />

public void setLocation(int x, int y)<br />

public String toString( )<br />

public void translate(int x, int y)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..PPool lyyggoonn<br />

Polígon dibuja polígonos. La clase Gráphics contiene un metodo drawPolygon() que toma un objeto<br />

Polígono como un argumento y realmente hace el dibujo. El polígono simplemente sostiene las coor<strong>de</strong>nadas <strong>de</strong> los<br />

vertices.<br />

public class Polygon implements Shape, java.io.Serializable {<br />

public int npoints;<br />

public int xpoints[];<br />

public int ypoints[];<br />

54


protected Rectangle bounds;<br />

public void addPoint(int x, int y)<br />

void calculateBounds(int xpoints[], int ypoints[], int npoints)<br />

public boolean contains(Point p) public boolean contains(int x, int y)<br />

public Rectangle getBoundingBox() public Rectangle getBounds( )<br />

public boolean insi<strong>de</strong>(int x, int y)<br />

public Polygon( )<br />

public Polygon(int xpoints[], int ypoints[], int npoints)<br />

public void translate(int <strong>de</strong>ltaX, int <strong>de</strong>ltaY)<br />

void updateBounds(int x, int y)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .PPooppuuppMeennuu<br />

PopupMenu crea un menú automáticamente en cualquier parte en un Componente. <strong>Para</strong> usarlo,<br />

simplemente cree una Instancia, agregue algúnos MenuItems (o CheckboxMenultems), y entonces llame a<br />

PopupMenu.show() con el Componente y coor<strong>de</strong>nadas que especifican don<strong>de</strong> usted quiere que aparezca.<br />

public class PopupMenu extends Menu {<br />

public synchronized void addNotify( )<br />

public PopupMenu( )<br />

public PopupMenu(String label)<br />

public void show(Component origin, int x, int y)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..PPrri innt tGrraapphhi iccss<br />

Esta interfaz mantiene un contexto <strong>de</strong> gráficos <strong>de</strong> impresión para una página. Esta clase contiene un método<br />

por <strong>de</strong>volver el objeto <strong>de</strong> Trabajo <strong>de</strong> Impresión que el objeto <strong>de</strong> PrintGraphics originó.<br />

public interface PrintGraphics {<br />

public PrintJob getPrintJob( );<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .PPrri innt tJJoobb<br />

PrintJob se usa para efectuar la impresión. La clase es abstracta, para instanciarla directamente. Usted <strong>de</strong>be<br />

recibir una instancia <strong>de</strong> Toolkit que usara el getPrintJob().<br />

public abstract void end(); {<br />

public void finalize( )<br />

public abstract Graphics getGraphics();<br />

public abstract Dimension getPageDimension( );<br />

public abstract int getPageResolution( );<br />

public abstract boolean lastPageFirst( );<br />

}<br />

55


CLASSSS JJaavvaa. ..aawt t. ..Reecct taannggl lee<br />

Rectángle es una clase <strong>de</strong> utilidad que sostiene cuatro enteros: x, y, anchura, y altura. El rectángulo ofrece<br />

algunos métodos útiles, como inci<strong>de</strong>() que le dice si un punto está <strong>de</strong>ntro <strong>de</strong>l Rectángulo.<br />

public class Rectangle implements Shape, java.io.Serializable {<br />

public int x;<br />

public int y;<br />

public int width;<br />

public int height;<br />

public void add(int newx, int newy)<br />

public void add(Point pt)<br />

public void add(Rectangle r)<br />

public boolean contains(Point p)<br />

public boolean contains(int x, int y)<br />

public boolean equals(Object obj)<br />

public Rectangle getBounds( public Point getLocation( )<br />

public Dimension getSize() public void grow(int h, int v)<br />

public int hashCo<strong>de</strong>() public boolean insi<strong>de</strong>(int x, int y)<br />

public Rectangle intersection(Rectangle r)<br />

public boolean intersects(Rectangle r)<br />

public boolean isEmpty( )<br />

public void move(int x, int y)<br />

public Rectangle( )<br />

public Rectangle(Rectangle r)<br />

public Rectangle(int x, int y, int width, int height)<br />

public Rectangle(int width, int height)<br />

public Rectangle(Point p, Dimension d)<br />

public Rectangle(Point p)<br />

public Rectangle(Dimension d)<br />

public void reshape(int x, int y, int width, int height)<br />

public void resize(int width, int height)<br />

public void setBounds(Rectangle r)<br />

public void setBounds(int x, int y, int width, int height)<br />

public void setLocation(Point p)<br />

public void setLocation(int x, int y)<br />

public void setSize(Dimension d)<br />

public void setSize(int width, int height)<br />

public String toString( )<br />

public void translate(int x, int y)<br />

public Rectangle union(Rectangle r)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..SSccrrool ll lPPaannee<br />

ScrollPane, es un nuevo Recipiente <strong>de</strong>s<strong>de</strong> el JDK 1.1, crea un Tablero <strong>de</strong>splazable. Que trabaja con un<br />

simple Panel (vea "java.awt.Panel" en esta parte), excepto que las barras pue<strong>de</strong>n <strong>de</strong>splasarse y <strong>de</strong>splazar los<br />

componentes.<br />

56


public class ScrollPane extends Container {<br />

public static final int SCROLLBARS_AS NEEDED;<br />

public static final int SCROLLBARS_ALWAYS;<br />

public static final int SCROLLBARS_NEVER;<br />

public Component add(Component comp, int pos)<br />

public void addNotify( )<br />

public void doLayout( )<br />

public Adjustable getHAdjustable( )<br />

public int getHScrollbarHeight( )<br />

public int getScrollbarDisplayPolicy( )<br />

public Point getScrollPosition( )<br />

public Adjustable getVAdjustable( )<br />

public Dimension getViewportSize( )<br />

public int getVScrollbarWidth( )<br />

public void layout( )<br />

public String paramString( )<br />

public void printComponents(Graphics g)<br />

public ScrollPane( )<br />

public ScrollPane(int scrollbarDisplayPolicy)<br />

public final void setLayout(LayoutManager mgr)<br />

public void setScrollPosition(int x, int y)<br />

public void setScrollPosition(Point p)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..SSccrrool ll lbbaarr<br />

Scrollbar es un Componente como Botón o Casilla <strong>de</strong> verificación. <strong>Para</strong> usar esta clase, todos que usted<br />

tiene que hacer es crear una Instancia y agregarla a un Container. Usted pue<strong>de</strong> especificar páginado y los<br />

incrementos finos, aunque los valores pre<strong>de</strong>finidos toman el efecto si usted no lo hace.<br />

public class Scrollbar extends Component implements Adjustable {<br />

public static final int HORIZONTAL;<br />

public static final int VERTICAL;<br />

int value;<br />

int maximum;<br />

int minimum;<br />

int visibleAmount;<br />

int orientation;<br />

int lineIncrement;<br />

int pageIncrement;<br />

AdjustmentListener adjustmentListener;<br />

public void addAdjustmentListener(AdjustmentListener l)<br />

public void addNotify( )<br />

boolean eventEnabled(AWTEvent e)<br />

public int getBlockIncrement( )<br />

public int getLinelncrement( )<br />

public int getMaximum( )<br />

public int getMinimum( )<br />

57


public int getOrientation( )<br />

public int getPageIncrement( )<br />

public int getUnitlncrement( )<br />

public int getValue( )<br />

public int getVisible( )<br />

public int getVisibleAmount( )<br />

protected String paramString( )<br />

protected void processAdjustmentEvent(AdjustmentEvent e)<br />

protected void processEvent(AWTEvent e)<br />

public void removeAdjustmentListener(AdjustmentListener 1)<br />

public Scrollbar( )<br />

public Scrollbar(int orientation)<br />

public Scrollbar(int orientation, int value, int visible, int minimum, int maximum)<br />

public synchronized void setBlockIncrement(int v)<br />

public void setLineIncrement(int v)<br />

public synchronized void setMaximum(int newMaximum)<br />

public synchronized void setMinimum(int newMinimum)<br />

public synchronized void setOrientation(int orientation)<br />

public void setPageIncrement(int v)<br />

public synchronized void setUnitIncrement(int v)<br />

public synchronized void setValue(int newValue)<br />

public synchronized void setValues(int value, int visible, int minimum, int maximum)<br />

public synchronized void setVisibleAmount(int newAmount)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .SShhaappee<br />

Shape es una interfaz usada por algunas <strong>de</strong> las clases gráficos-relacionadas.<br />

public interface Shape {<br />

public Rectangle getBounds( );<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..SSyysst teemCool loorr<br />

SystemColor <strong>de</strong>scribe colores simbólicos que representan el color <strong>de</strong> objetos <strong>de</strong> GUI en un sistema.<br />

public final class SystemColor extends Color implements java.io.Serializable {<br />

public final static int DESKTOP;<br />

public final static int ACTIVE CAPTION;<br />

public final static int ACTIVE_CAPTION_TEXT;<br />

public final static int ACTIVE CAPTION_BORDER;<br />

public final static int INACTIVE_CAPTION;<br />

public final static int INACTIVE_CAPTION TEXT;<br />

public final static int INACTIVE CAPTION_BORDER;<br />

public final static int WINDOW;<br />

public final static int WINDOW_BORDER;<br />

public final static int WINDOW TEXT;<br />

public final static int MENU;<br />

58


public final static int MENU_TEXT;<br />

public final static int TEXT;<br />

public final static int TEXT TEXT;<br />

public final static int TEXT HIGHLIGHT;<br />

public final static int TEXT_HIGHLIGHT TEXT;<br />

public final static int TEXT INACTIVE_TEXT;<br />

public final static int CONTROL;<br />

public final static int CONTROL_TEXT;<br />

public final static int CONTROL_ HIGHLIGHT;<br />

public final static int CONTROL_LT_HIGHLIGHT;<br />

public final static int CONTROL_SHADOW;<br />

public final static int CONTROL_DK_SHADOW;<br />

public final static int SCROLLBAR;<br />

public final static int INFO;<br />

public final static int INFO TEXT;<br />

public final static int NUM_COLORS;<br />

public final static SystemColor <strong>de</strong>sktop;<br />

public final static SystemColor activeCaption;<br />

public final static SystemColor activeCaptionText;<br />

public final static SystemColor activeCaptionBor<strong>de</strong>r;<br />

public final static SystemColor inactiveCaption;<br />

public final static SystemColor inactiveCaptionText;<br />

public final static SystemColor inactiveCaptionBor<strong>de</strong>r;<br />

public final static SystemColor window;<br />

public final static SystemColor windowBor<strong>de</strong>r;<br />

public final static SystemColor windowText;<br />

public final static SystemColor menu;<br />

public final static SystemColor menuText;<br />

public final static SystemColor text;<br />

public final static SystemColor textText;<br />

public final static SystemColor textHighlight;<br />

public final static SystemColor textHighlightText;<br />

public final static SystemColor textInactiveText;<br />

public final static SystemColor control;<br />

public final static SystemColor controlText;<br />

public final static SystemColor controlHighlight;<br />

public final static SystemColor controlLtHighlight;<br />

public final static SystemColor controlShadow;<br />

public final static SystemColor controlDkShadow;<br />

public final static SystemColor scrollbar;<br />

public final static SystemColor info;<br />

public final static SystemColor infoText;<br />

}<br />

59


CLASSSS JJaavvaa. .aawt t. .Teexxt tArreeaa<br />

TextArea es una área <strong>de</strong>l multi-línea usada pora editar. Es un Componente, para que usted pue<strong>de</strong> agregarlo<br />

a cualquier Recipiente(container). TextArea pue<strong>de</strong> ocuparse <strong>de</strong> eventos importantes, incluso el corte y<br />

funcionamientos <strong>de</strong> pegado, automáticamente. Esta clase también pue<strong>de</strong> crear el scrollbars y pue<strong>de</strong> ocuparse <strong>de</strong> los<br />

eventos como es <strong>de</strong> era <strong>de</strong> esperarse.<br />

Note que algunos <strong>de</strong> los métodos que usted pue<strong>de</strong> esperar encontrar en esta clase, como el getText (), realmente se<br />

<strong>de</strong>fine en TextComponent. Si usted no encuentra lo que está buscando aquí, revise en TextComponent (vea<br />

"java.awt.TextComponent" en esta parte).<br />

public class TextArea extends TextComponent {<br />

int rows;<br />

int columns;<br />

public static final int SCROLLBARS_BOTH;<br />

public static final int SCROLLBARS_VERTICAL_ONLY;<br />

public static final int SCROLLBARS_HORIZONTAL_ONLY;<br />

public static final int SCROLLBARS_NONE;<br />

public void addNotify( )<br />

public synchronized void append(String str)<br />

public void appendText(String str)<br />

public int getColumns( )<br />

public Dimension getMinimumSize(int rows, int columns)<br />

public Dimension getMinimumSize( )<br />

public Dimension getPreferredSize(int rows, int columns)<br />

public Dimension getPreferredSize( )<br />

public int getRows( )<br />

public int getScrollbarVisibility( )<br />

public synchronized void insert(String str, int pos)<br />

public void insertText(String str, int pos)<br />

public Dimension minimumSize(int rows, int columns)<br />

public Dimension minimumSize( )<br />

protected String paramString( )<br />

public Dimension preferredSize(int rows, int columns)<br />

public Dimension preferredSize( )<br />

public synchronized void replaceRange(String str, int start, int end)<br />

public void replaceText(String str, int start, int end) public void setColumns(int columns) public void<br />

public TextArea( )<br />

public TextArea(String text)<br />

public TextArea(String text, int rows, int columns)<br />

public TextArea(String text, int rows, int columns, int scrollbars)<br />

public TextArea(int rows, int columns)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Teexxt tCoomppoonneennt t<br />

TextComponent es la superclase <strong>de</strong> TextField y TextArea. Apenas factoriza fuera alguna <strong>de</strong> la conducta<br />

común en las dos clases. Usted probablemente no acce<strong>de</strong>rá directamente esta clase, pero usted pue<strong>de</strong> tener que<br />

buscar aquí para encontrar métodos esperados que no aparecen en TextField o TextArea.<br />

60


public class TextComponent extends Component {<br />

String text;<br />

boolean editable;<br />

int selectionStart;<br />

int selectionEnd;<br />

protected TextListener textListener;<br />

public void addTextListener(TextListener 1)<br />

boolean eventEnabled(AWTEvent e)<br />

public int getCaretPosition( )<br />

public synchronized String getSelectedText( )<br />

public synchronized int getSelectionEnd( )<br />

public synchronized int getSelectionStart( )<br />

public synchronized String getText( )<br />

public boolean isEditable( )<br />

protected String paramString( )<br />

protected void processEvent(AWTEvent e)<br />

protected void processTextEvent(TextEvent e)<br />

public void removeNotify( )<br />

public void removeTextListener(TextListener 1)<br />

public synchronized void select(int selectionStart, int selectionEnd)<br />

public synchronized void selectAll( public void setCaretPosition(int position)<br />

public synchronized void setEditable(boolean b)<br />

public synchronized void setSelectionEnd(int selectionEnd)<br />

public synchronized void setSelectionStart(int selectionStart)<br />

public synchronized void setText(String t)<br />

TextComponent(String text)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .Teexxt tFFi ieel ldd<br />

TextField es una simple línea <strong>de</strong> texto editable. Usted pue<strong>de</strong> especificar el número <strong>de</strong> columnas que son<br />

visible en uno <strong>de</strong> los constructores. TextField pue<strong>de</strong> hacerse no-editable si usted apenas quiere <strong>de</strong>splegar el texto<br />

con un bor<strong>de</strong> alre<strong>de</strong>dor <strong>de</strong> él para las estética.<br />

public class TextField extends TextComponent {<br />

int columns;<br />

char echoChar;<br />

ActionListener actionListener;<br />

public void addActionListener(ActionListener 1)<br />

public void addNotify( )<br />

public boolean echoCharIsSet( boolean eventEnabled(AWTEvent e)<br />

public int getColumns( )<br />

public char getEchoChar( )<br />

public Dimension getMinimumSize(int columns)<br />

public Dimension getMinimumSize( )<br />

public Dimension getPreferredSize(int columns)<br />

public Dimension getPreferredSize( )<br />

public Dimension minimumSize(int columns)<br />

61


public Dimension minimumSize( )<br />

protected String paramString( )<br />

public Dimension preferredSize(int columns)<br />

public Dimension preferredSize( )<br />

protected void processActionEvent(ActionEvent e)<br />

protected void processEvent(AWTEvent e)<br />

public void removeActionListener(ActionListener 1)<br />

public void setColumns(int columns)<br />

public void setEchoChar(char c)<br />

public void setEchoCharacter(char c)<br />

public TextField( )<br />

public TextField(String text)<br />

public TextField(String text, int columns)<br />

public TextField(int columns)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Tooool lkki it t<br />

Toolkit es para encontrar todas las propieda<strong>de</strong>s <strong>de</strong> un sistema, como el tamaño <strong>de</strong> la pantalla, la resolución,<br />

las fuentes disponibles, y así sucesivamente. Porque Toolkit es abstracto, usted pue<strong>de</strong> hacer una Instancia <strong>de</strong>l<br />

objeto llamando Toolkit.getDefaultToolkit( ).<br />

public abstract class Toolkit {<br />

public abstract void beep( );<br />

public abstract int checkImage(Image image, int width, int height, ImageObserver observar);<br />

protected abstract ButtonPeer createButton(Button target);<br />

protected abstract CanvasPeer createCanvas(Canvas target);<br />

protected abstract CheckboxPeer createCheckbox(Checkbox target);<br />

protected abstract CheckboxMenultemPeer createCheckboxMenuItem(CheckboxMenultem target);<br />

protected abstract ChoicePeer createChoice(Choice target);<br />

protected java.awt.peer.LightweightPeer createComponent(Component target)<br />

protected abstract DialogPeer createDialog(Dialog target);<br />

protected abstract FileDialogPeer createFileDialog(FileDialog target);<br />

protected abstract FramePeer createFrame(Frame target);<br />

public abstract Image createImage(ImageProducer producer);<br />

public Image createImage(byte[] imagedata)<br />

public abstract Image createImage(byte[] imagedata, int imageoffset, int imagelength);<br />

protected abstract LabelPeer createLabel(Label target);<br />

protected abstract ListPeer createList(List target);<br />

protected abstract MenuPeer createMenu(Menu target);<br />

protected abstract MenuBarPeer createMenuBar(MenuBar tar get);<br />

protected abstract MenuItemPeer createMenuItem(Menultem target);<br />

protected abstract Panel Peer createPanel(Panel target);<br />

protected abstract PopupMenuPeer createPopupMenu(PopupMenu target);<br />

protected abstract ScrollbarPeer createScrollbar(Scrollbar target);<br />

protected abstract Scrol]Pan ePeer createScrol1Pane(Scrol1Pane target);<br />

protected abstract TextAreaPeer createTextArea(TextArea target);<br />

62


protected abstract TextFieldPeer createTextField(TextField target);<br />

protected abstract WindowPeer createWindow(Window target);<br />

public abstract ColorMo<strong>de</strong>l getColorMo<strong>de</strong>l( );<br />

public static synchronized Toolkit getDefaultToolkit( )<br />

public abstract String[] getFontList( );<br />

public abstract FontMetrics getFontMetrics(Font font);<br />

protected abstract FontPeer getFontPeer(String name, int style);<br />

public abstract Image getImage(String filename);<br />

public abstract Image getlmage(URL url);<br />

public int getMenuShortcutKeyMask( )<br />

protected static Container getNativeContainer(Component c)<br />

public abstract PrintJob getPrintJob(Frame frame, String jobtitle, Properties props);<br />

public static String getProperty(String key, String <strong>de</strong>faultValue)<br />

public final EventQueue getSystemEventQueue( )<br />

public abstract int getScreenResolution( );<br />

public abstract Dimension getScreenSize( );<br />

public abstract Clipboard getSystemClipboard( );<br />

protected void loadSystemColors(int[] systemColors)<br />

public abstract boolean prepareImage(Image image, int width, int height, ImageObserver observer);<br />

static public abstract void sync( );<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..Wi innddoow<br />

La ventana es la superclase <strong>de</strong> Frame y Diálog. Usted no pue<strong>de</strong> crear una Instancia <strong>de</strong> Window a menos que<br />

usted este en el paquete <strong>de</strong> AWT. Usted usa Window como factor comun entre Frame y Diálog. Si usted quiere<br />

crear una ventana estandar con una barra <strong>de</strong> título, use Frame(vea "java.awt.Frame" en esta parte).<br />

public class Window extends Container {<br />

String warningString;<br />

public void addNotify( )<br />

public synchronized void addWindowListener(WindowListener 1)<br />

void dispatchEvent(AWTEvent e)<br />

public void dispose( )<br />

boolean eventEnabled(AWTEvent e)<br />

public Component getFocusOwner( )<br />

public Locale getLocale( )<br />

public Toolkit getToolkit( )<br />

public final String getWarningString( )<br />

void nextFocus(Component base)<br />

public synchronized void removeWindowListener(WindowListener 1)<br />

public void pack( )<br />

public boolean postEvent(Event e)<br />

void postProcessKeyEvent(KeyEvent e)<br />

void setFocusOwner(Component c)<br />

public void show( )<br />

public void toBack( )<br />

public void toFront( )<br />

63


void transferFocus(Component base)<br />

Window( )<br />

public Window(Frame parent)<br />

}<br />

PPACKAGE<br />

Las clases e interfaces en el pakete java.awt.event<br />

JJaavvaa. .aawt t. .eevveennt t<br />

soprtan el mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>legacion <strong>de</strong> eventos. Usted<br />

pue<strong>de</strong> encontrar el mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>legacion mas eficaz que los<br />

métodos convencionales encontrados en el JDK 1.02. Los métodos<br />

convencionales todavía se apoyan y funcionan como se encontraba<br />

en el JDK 1.1, pero usted no <strong>de</strong>be mezclar a los métodos convencionales y el mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>legacion <strong>de</strong> eventos.<br />

Las figuras siguientes muestran el package <strong>de</strong> la jerarquía <strong>de</strong> clases <strong>de</strong> java.awt.event.<br />

Usted encuentra tres tipos <strong>de</strong> objetos en este paquete: los eventos, los adaptadores, y los oyentes. Los<br />

eventos, como ActionEvent o MouseEvent, contienen la información sobre los eventos y son pasados al manejador<br />

<strong>de</strong> evento <strong>de</strong> los métodos. Los adaptadores, como WindowAdapter o ComponentAdapter, son clases abstractas que<br />

64


usted pue<strong>de</strong> exten<strong>de</strong>r en or<strong>de</strong>n para manejar los eventos. Los oyentes, como MouseMotionListener o<br />

ActionListener, son las interfazs que usted pue<strong>de</strong> lnstanciar para ocuparse <strong>de</strong> eventos.<br />

¿Así que cuál es la diferencia entre los adaptadores y oyentes? Los adaptadores son las clases abstractas, que usted<br />

pue<strong>de</strong> solamente pue<strong>de</strong> exten<strong>de</strong>r <strong>de</strong> ellos. Los oyentes son las interfaces, que usted pue<strong>de</strong> lnstanciar tantos como<br />

usted guste. ¿usted pue<strong>de</strong> usar a los tantos oyentes como usted quiera, por qué no siempre usa los oyentes? La<br />

mayoría <strong>de</strong> los oyentes tienen más <strong>de</strong> un método especificado, usted pueda sobre escribir todos sus métodos, aun<br />

cuando estos no hacen nada. Los métodos <strong>de</strong>l adaptador no hacen nada por <strong>de</strong>fecto, para que usted sólo tiene que<br />

sobre escribir los métodos que le interesan. En los casos dón<strong>de</strong> sólo un método se especifica, como<br />

ActionListener, ninguna clase <strong>de</strong>l adaptador correspondiente existe. Una clase abstracta para una interfaz con sólo<br />

un método no proporciona ningún ventaja, porque no se <strong>de</strong>fine.<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Acct ti ioonnEvveennt t<br />

Cuando una acción ocurre, un ActionListener recibe una Instancia <strong>de</strong> este objeto. Las acciones pue<strong>de</strong>n ser<br />

<strong>de</strong> botón presionado, las selecciones <strong>de</strong> Item <strong>de</strong> menú, el retorno <strong>de</strong> las letras introducidas en un campo <strong>de</strong>l texto, y<br />

así sucesivamente.<br />

public class ActionEvent extends AWTEvent {<br />

public static final int SHIFT_MASK:<br />

public static final int CTRL MASK;<br />

public static final int METAMASK;<br />

public static final int ALT TMASK;<br />

public static final int ACION_FIRST;<br />

public static final int ACTION_LAST;<br />

public static final int ACTION_PERFORMED;<br />

String actionCommand;<br />

int modifiers;<br />

public ActionEvent(Object source, int id, String command)<br />

public ActionEvent(Object source, int id, String command, int modifiers)<br />

public String getActionCommand( )<br />

public int getModifiers( )<br />

public String paramString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .eevveennt t. .Acct ti ioonnLi isst teenneerr<br />

Cuando usted crea una clase para el manejo <strong>de</strong> un evento <strong>de</strong> acción, usted <strong>de</strong>be Instanciar esta interfaz y<br />

<strong>de</strong>be sobre escribir el método <strong>de</strong>l actionPerformed. El resultado: Usted consigue una Instancia <strong>de</strong> ActionListener<br />

que <strong>de</strong>scribe el evento.<br />

public interface ActionListener extends EventListener {<br />

public void actionPerformed(ActionEvent e);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Addj juusst tmeennt tEvveennt t<br />

Use esta clase con los componentes ajustables, tales como las barras <strong>de</strong>splazables. Objetos que llevan a<br />

cabo el AdjustmentListener reciben una Instancia <strong>de</strong> esta clase.<br />

public class AdjustmentEvent extends AWTEvent {<br />

65


public static final int ADJUSTMENT FIRST;<br />

public static final int ADJUSTMENT_LAST;<br />

public static final int ADJUSTMENT_VALUE_CHANGED;<br />

public static final int UNIT_INCREMENT;<br />

public static final int UNIT DECREMENT;<br />

public static final int BLOCK_DECREMENT;<br />

public static final int BLOCK_INCREMENT;<br />

public static final int TRACK;<br />

Adjustable adjustable;<br />

int value;<br />

int adjustmentType;<br />

public AdjustmentEvent(Adjustable source, int id, int type, i n t value)<br />

public Adjustable getAdjustable( )<br />

public int getAdjustmentType( )<br />

public int getValue( )<br />

public String paramString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .eevveennt t. .Addj juusst tmeennt tLi isst teenneerr<br />

Si usted quiere ocuparse <strong>de</strong> eventos <strong>de</strong> ajuste, como los eventos <strong>de</strong> barra <strong>de</strong>splazable, cree que una clase<br />

que lleva a cabo esta interfaz y sobre escriba el Valor cambiado por el método. Su objeto recibe una Instancia <strong>de</strong><br />

AdjustmentEvent cuando un ajuste ocurre. Note que ninguna clase <strong>de</strong>l adaptador correspondiente existe.<br />

public interface AdjustmentListener extends EventListener {<br />

public void adjustmentValueChanged(AdjustmentEvent e);<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. ..Coomppoonneennt tAddaappt teerr<br />

Si usted quiere cachar algunos eventos <strong>de</strong> componente generales, extienda esta clase y sobre escriba los<br />

métodos que le interesan. Cada uno <strong>de</strong> sus métodos recibe una Instancia <strong>de</strong> ComponentEvent que <strong>de</strong>scribe el<br />

evento.<br />

public abstract class ComponentAdapter implements ComponentListener {<br />

public void componentHid<strong>de</strong>n(ComponentEvent e)<br />

public void componentMoved(ComponentEvent e)<br />

public void componentResized(ComponentEvent e)<br />

public void componentShown(ComponentEvent e)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. .Coomppoonneennt tEvveennt t<br />

Cuando un evento <strong>de</strong> componente ocurre (como el movimiento, tamaño, muestrar, y acultar), un Instancia <strong>de</strong> esta<br />

clase va a todos los Componentes Listeners y ComponentAdapters.<br />

public class ComponentEvent extends AWTEvent {<br />

public static final int COMPONENT_FIRST;<br />

66


public static final int COMPONENT_LAST;<br />

public static final int COMPONENT MOVED;<br />

public static final int COMPONENT_RESIZED;<br />

public static final int COMPONENT_SHOWN;<br />

public static final int COMPONENT_HIDDEN;<br />

public ComponentEvent(Component source, int id)<br />

public Component getComponent( )<br />

public String paramString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. ..Coomppoonneennt tLi isst teenneerr<br />

Si usted quiere cachar algunos eventos <strong>de</strong> componentes generales, como el resize y mueve, Implemente esta<br />

interfaz y sobre escriba los métodos. Su clase recibe una Instancia <strong>de</strong> ComponentEvent cuando uno <strong>de</strong> los eventos<br />

<strong>de</strong>l componente ocurre. Usted tiene que sobre escribir todos los métodos en esta interfaz, aun cuando usted no hace<br />

nada con ellos.<br />

public interface ComponentListener extends EventListener {<br />

public void componentResized(ComponentEvent e);<br />

public void componentMoved(ComponentEvent e);<br />

public void componentShown(ComponentEvent e);<br />

public void componentHid<strong>de</strong>n(ComponentEvent e);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Coonnt taai inneerrAddaappt teerr<br />

ContainerAdapter se parece ComponentAdapter, pero ContainerAdapter trabaja en los contenedores, como<br />

Frame o Panel. Si usted quiere ocuparse <strong>de</strong> eventos <strong>de</strong> container, extienda esta clase y sobre escriba los métodos<br />

que le interesan. Cada uno <strong>de</strong> sus métodos recibe un Instancia <strong>de</strong> ContainerEvent que <strong>de</strong>scribe el evento que<br />

ocurrió.<br />

public abstract class ContainerAdapter implements ContainerListener {<br />

public void componentAd<strong>de</strong>d(ContainerEvent e)<br />

public void componentRemoved(ContainerEvent e)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Coonnt taai inneerrEvveennt t<br />

Una Instancia <strong>de</strong> esta clase se da a todo los ContainerListeners y ContainerAdapters cuando un<br />

Componente se agrega o quita <strong>de</strong> un Recipiente.<br />

public class ContainerEvent extends ComponentEvent {<br />

public static final int CONTAINER_FIRST;<br />

public static final int CONTAINER_LAST;<br />

public static final int COMPONENT_ADDED;<br />

public static final int COMPONENT_REMOVED;<br />

Component child;<br />

public ContainerEvent(Component source, int id, Component child)<br />

public Component getChild( )<br />

public Container getContainer( )<br />

67


ublic String paramString( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Coonnt taai inneerrLi isst teenneerr<br />

Si usted quiere saber cuando un Componente fue agregado o quitado <strong>de</strong> un Recipiente, Implemente esta<br />

interfaz y sobre escriba los métodos. Cada uno <strong>de</strong> sus métodos recibe un Instancia <strong>de</strong> ContainerEvent que <strong>de</strong>scribe<br />

el evento que ocurrió.<br />

public interface ContainerListener extends EventListener {<br />

public void componentAd<strong>de</strong>d(ContainerEvent e);<br />

public void componentRemoved(ContainerEvent e);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .FFooccuussAddaappt teerr<br />

FocusAdapter coge los eventos <strong>de</strong> enfoque <strong>de</strong> Componente. lf que usted quiere coger los eventos <strong>de</strong>l<br />

enfoque, extienda esta clase e Implemente los métodos que le interesan. Cada uno <strong>de</strong> sus métodos recibe una<br />

Instancia <strong>de</strong> FocusEvent que <strong>de</strong>scribe el evento que ocurrió.<br />

public abstract class FocusAdapter implements FocusListener {<br />

public void focusGained(FocusEvent e)<br />

public void focusLost(FocusEvent e)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. ..FFooccuussEvveennt t<br />

FocusAdapters y FocusListeners reciben una Instancia <strong>de</strong> esta clase cuando un componente gana o pier<strong>de</strong> el<br />

enfoque.<br />

public olass FocusEvent extends ComponentEvent {<br />

public static final int FOCUS_FIRST;<br />

public static final int FOCUS_LAST;<br />

public static final int FOCUS GAINED;<br />

public static final int FOCUS_LOST;<br />

boolean temporary;<br />

public FocusEvent(Component source, int id, Boolean temporary)<br />

public FocusEvent(Component source, int id)<br />

public boolean isTemporary( )<br />

public String paramString( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .FFooccuussLi it teenneerr<br />

Si usted quiere ser notificado que cuando un componente gana o pier<strong>de</strong> el enfoque, Implemente esta<br />

interfaz e Implemente sus métodos. Cada uno <strong>de</strong> sus métodos recibe un caso <strong>de</strong> FocusEvent que <strong>de</strong>scribe el evento<br />

que ocurrió.<br />

public interface FocusListener extends EventListener {<br />

public void focusGained(FocusEvent e);<br />

public void focusLost(FocusEvent e); }<br />

68


CLASSSS JJaavvaa. ..aawt t. .eevveennt t. .IInnppuut tEvveennt t<br />

InputEvent es el superclass <strong>de</strong> otra clase <strong>de</strong> eventos, como KeyEvent y MouseEvent. Los InputEvent<br />

clasifican los factores fuera <strong>de</strong> los modificadores importantes, como el cambio y mando. Usted probablemente no<br />

usará directamente esta clase, pero usted pue<strong>de</strong> querer usar sus métodos para averiguar si el usuario estaba<br />

sujetando la tecla mayúscula cuando él o ella arrastraron el ratón, por ejemplo.<br />

public abstract class InputEvent extends ComponentEvent {<br />

public static final int SHIFT MASK;<br />

public static final int CTRL MASK;<br />

public static final int META _MASK;<br />

public static final int ALT_MASK;<br />

public static final int BUTTONI MASK;<br />

public static final int BUTTON2_MASK;<br />

public static final int BUTTON3 MASK;<br />

long when;<br />

int modifiers;<br />

public void consume( )<br />

public int getModifiers()<br />

public long getWhen( )<br />

InputEvent(Component source, int id, long when, int modifiers)<br />

public boolean isAltDown( )<br />

public boolean isConsumed( )<br />

public boolean isControlDown( )<br />

public boolean isMetaDown( )<br />

public boolean isShiftDown( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .IIt teemEvveennt t<br />

Cuando usted usa ItemEvent en su código, un Instancia <strong>de</strong> ItemEvent se pasa al ItemListener cuando un<br />

cambio <strong>de</strong> estado ocurre en un Componente. ItemEvent se apoya por componentes que mantienen el estado; una<br />

caja <strong>de</strong>l cheque es un ejemplo <strong>de</strong> un Componente que mantiene un estado (en o fuera <strong>de</strong>).<br />

public class ItemEvent extends AWTEvent {<br />

public static final int ITEM_FIRST;<br />

public static final int ITEM_LAST;<br />

public static final int ITEM_STATE_CHANGED;<br />

public static final int SELECTED;<br />

public static final int DESELECTED;<br />

Object item;<br />

int stateChange;<br />

public Object getItem( )<br />

public ItemSelectable getltemSelectable( )<br />

public int getStateChange( )<br />

public ItemEvent(ItemSelectable source, int id, Object item, int stateChange)<br />

public String paramString( )<br />

}<br />

69


CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. ..IIt teemLi isst teenneerr<br />

Si usted quiere coger los eventos <strong>de</strong> cambio <strong>de</strong> estado, Implemente esta interfaz y Sobre escriba el método.<br />

Su clase recibe una Instancia <strong>de</strong> ItemEvent cuando un cambio <strong>de</strong> estado ocurre. (Un evento <strong>de</strong> cambio <strong>de</strong> estado<br />

ocurre cuando un usuario hace clic en una caja <strong>de</strong>l chequeo.) Nota que no hay ningún adaptador correspondiente<br />

para esta interfaz<br />

public interface ItemListener extends EventListener {<br />

void itemStateChanged(ItemEvent e);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .KeeyyAddaappt teerr<br />

KeyAdapter coge los eventos importantes. Si usted quiere manejar los eventos, extienda esta clase y sobre<br />

escriba los métodos que le interesan. Cada uno <strong>de</strong> los métodos recibe un objeto <strong>de</strong> KeyEvent cuando un evento<br />

importante ocurre.<br />

public abstract class KeyAdapter implements KeyListener {<br />

public void keyPressed(KeyEvent e)<br />

public void keyReleased(KeyEvent e)<br />

public void keyTyped(KeyEvent e)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .KeeyyEvveennt t<br />

KeyEvent le dice en la vida todo lo que usted quiso saber sobre un evento importante. Pue<strong>de</strong> <strong>de</strong>cirle incluso<br />

cosas que usted no quiere saber. KeyAdapters y KeyListeners reciben una Instancia <strong>de</strong> KeyEvent cuando un evento<br />

importante ocurre.<br />

public class KeyEvent extends InputEvent {<br />

public static final int KEY_FIRST;<br />

public static final int KEY_LAST;<br />

public static final int KEY TYPED;<br />

public static final int KEY_PRESSED;<br />

public static final int KEYRELEASED;<br />

public static final int VK_ENTER;<br />

public static final int VK BACK_SPACE;<br />

public static final int VK_TAB;<br />

public static final int VK_CANCEL;<br />

public static final int VK CLEAR;<br />

public static final int VK SHIFT;<br />

public static final int VK_CONTROL;<br />

public static final int VK ALT;<br />

public static final int VK_PAUSE;<br />

public static final int VK_CAPS_LOCK;<br />

public static final int VK_ESCAPE;<br />

public static final int VK_SPACE;<br />

public static final int VK_PAGE UP;<br />

public static final int VK_PAGE_DOWN;<br />

public static final int VK END;<br />

70


public static final int VK HOME;<br />

public static final int VK_LEFT;<br />

public static final int VK UP;<br />

public static final int VK_RIGHT;<br />

public static final int VK_DOWN;<br />

public static final int VK COMMA;<br />

public static final int VK_PERIOD;<br />

public static final int VK SLASH;<br />

public static final int VK_0;<br />

public static final int VK_1;<br />

public static final int VK 2;<br />

public static final int VK 3;<br />

public static final int VK_4;<br />

public static final int VK_5;<br />

public static final int VK_6;<br />

public static final int VK_7;<br />

public static final int VK 8;<br />

public static final int VK_9;<br />

public static final int VK SEMICOLON;<br />

public static final int VK_EQUALS;<br />

public static final int VK_A;<br />

public static final int VK_B;<br />

public static final int VK_C;<br />

public static final int VK D;<br />

public static final int VK_E;<br />

public static final int VK F;<br />

public static final int VK_G;<br />

public static final int VK_H;<br />

public static final int VK_I;<br />

public static final int VK_J;<br />

public static final int VK K;<br />

public static final int VK_L;<br />

public static final int VK_M;<br />

public static final int VK_N;<br />

public static final int VK_O;<br />

public static final int VK_P;<br />

public static final int VK_0;<br />

public static final int VK_R;<br />

public static final int VK_S;<br />

public static final int VK T;<br />

public static final int VK_U;<br />

public static final int VK V;<br />

public static final int VK_W;<br />

public static final int VK_X;<br />

public static final int VK Y;<br />

public static final int VK_Z;<br />

public static final int VK_OPEN_BRACKET;<br />

71


public static final int VK_BACK SLASH;<br />

public static final int VK CLOSE_BRACKET;<br />

public static final int VK_NUMPADO;<br />

public static final int VK_NUMPAD1;<br />

public static final int VK_NUMPAD2;<br />

public static final int VK_NUMPAD3;<br />

public static final int VK_NUMPAD4;<br />

public static final int VK_NUMPADS;<br />

public static final int VK_NUMPAD6;<br />

public static final int VK_NUMPAD7;<br />

public static final int VK NUMPAD8;<br />

public static final int VK_NUMPAD9;<br />

public static final int VK_MULTIPLY;<br />

public static final int VK_ADD;<br />

public static final int VK_SEPARATER;<br />

public static final int VK SUBTRACT;<br />

public static final int VK_DECIMAL;<br />

public static final int VK DIVIDE;<br />

public static final int VK_F1;<br />

public static final int VK_F2;<br />

public static final int VK_F3;<br />

public static final int VK_F4;<br />

public static final int VK F5;<br />

public static final int VK_F6;<br />

public static final int VK_F7;<br />

public static final int VK_F8;<br />

public static final int VK F9;<br />

public static final int VK_F10;<br />

public static final int VK_F11;<br />

public static final int VK_F12;<br />

public static final int VK DELETE;<br />

public static final int VK_NUM_LOCK;<br />

public static final int VK_SCROLL_LOCK;<br />

public static final int VK_PRINTSCREEN;<br />

public static final int VK_INSERT;<br />

public static final int VK HELP;<br />

public static final int VK_META;<br />

public static final int VK BACK_QUOTE;<br />

public static final int VK_QUOTE;<br />

public static final int VK_UNDEFINED;<br />

public static final char CHAR_UNDEFINED;<br />

int keyCo<strong>de</strong>;<br />

char keyChar;<br />

public char getKeyChar()<br />

public int getKeyCo<strong>de</strong>()<br />

public static String getKeyModifiersText(int modifiers)<br />

public static String getKeyText(int keyCo<strong>de</strong>)<br />

72


public boolean isActionKey()<br />

public KeyEvent(Component source, int id, long when, int modifiers, int keyCo<strong>de</strong>, char keyChar)<br />

public KeyEvent(Component source, int id, long when, int<br />

modifiers, int keyCo<strong>de</strong>)<br />

public String paramString()<br />

public void setKeyChar(char keyChar)<br />

public void setKeyCo<strong>de</strong>(int keyCo<strong>de</strong>)<br />

public void setModifiers(int modifiers)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. .KeeyyLi isst teenneerrt t<br />

KeyListener se habilita cuando usted quiere ocuparse <strong>de</strong> eventos importantes. Simplemente Implemente<br />

esta interfaz y sobre escriba los métodos. Cada uno <strong>de</strong> los métodos recibe una Instancia <strong>de</strong> un objeto KeyEvent<br />

cuando un evento importante ocurre.<br />

public interface KeyListener extends EventListener {<br />

public void keyTyped(KeyEvent e);<br />

public void keyPressed(KeyEvent e);<br />

public void keyReleased(KeyEvent e);<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .eevveennt t. .MoouusseeAddaappt teerr<br />

Piense en MouseAdapter como el gato <strong>de</strong> la caza <strong>de</strong> java.awt.event el paquete: MouseAdapter coge los<br />

eventos <strong>de</strong>l ratón. <strong>Para</strong> ocuparse <strong>de</strong> eventos <strong>de</strong>l ratón, extienda esta clase y sobre escriba los métodos que le<br />

interesan. Cada uno <strong>de</strong> estos métodos recibe una Instancia <strong>de</strong> MouseEvent cuando un evento <strong>de</strong>l ratón ocurre.<br />

public abstract class MouseAdapter implements MouseListener {<br />

public void mouseClicked(MouseEvent e)<br />

public void mouseEntered(MouseEvent e)<br />

public void mouseExited(MouseEvent e)<br />

public void mousePressed(MouseEvent e)<br />

public void mouseReleased(MouseEvent e)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .MoouusseeEvveennt t<br />

Esta clase contiene todos los tipos <strong>de</strong> información buena sobre un evento <strong>de</strong>l ratón, incluso una cuenta <strong>de</strong><br />

doble clics y múltiples clicspue<strong>de</strong>n ser manejados facilmente<br />

Usted pue<strong>de</strong> usar esta clase para verificar los multiples clics <strong>de</strong>l ratón para realizar algunas tareas interesantes. Por<br />

ejemplo, si el usuario pulsa el botón cinco veces, usted pue<strong>de</strong> hacer el programa que <strong>de</strong>splegacaja <strong>de</strong> dialogo "Stop<br />

Pressing My Button".<br />

public class MouseEvent extends InputEvent {<br />

public static final int MOUSE FIRST;<br />

public static final int MOUSELAST;<br />

public static final int MOUSE_CLICKED;<br />

public static final int MOUSE_PRESSED;<br />

public static final int MOUSE_RELEASED;<br />

73


public static final int MOUSE_MOVED;<br />

public static final int MOUSE_ENTERED;<br />

public static final int MOUSE_EXITED;<br />

public static final int MOUSE_DRAGGED;<br />

int x;<br />

int y;<br />

int clickCount;<br />

boolean popupTrigger;<br />

public int getClickCount( )<br />

public Point getPoint( )<br />

public int getX( )<br />

public int getY( )<br />

public boolean isPopupTrigger( )<br />

public MouseEvent(Component source, int id, long when, int modifiers, int x, int y, int clickCount, boolean<br />

popupTrigger)<br />

public String paramString( )<br />

public synchronized void translatePoint(int x, int y)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .eevveennt t. .MoouusseeLi isst teenneerr<br />

MouseListener le ayuda a manejar eventos <strong>de</strong>l ratón. Si Implementa esta interfaz y Implementa los<br />

métodos, cada uno <strong>de</strong> estos métodos recibe una Instancia <strong>de</strong> MouseEvent cuando un evento <strong>de</strong>l ratón ocurre.<br />

public interface MouseListener extends EventListener {<br />

public void mouseClicked(MouseEvent e);<br />

public void mousePressed(MouseEvent e);<br />

public void mouseReleased(MouseEvent e);<br />

public void mouseEntered(MouseEvent e);<br />

public void mouseExited(MouseEvent e);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. ..MoouusseeMoot ti ioonnAddaappt teerr<br />

Este adaptador coge los movimientos y arrastres <strong>de</strong>l ratón. Si usted quiere manejar estos eventos, extienda<br />

esta clase e Implemente los métodos que le interesan. Cada uno <strong>de</strong> los métodos recibe una Instancia <strong>de</strong><br />

MouseEvent que <strong>de</strong>scribe el evento en <strong>de</strong>talle.<br />

public abstract class MouseMotionAdapter implements MouseMotionListener {<br />

public void mouseDragged(MouseEvent e)<br />

public void mouseMoved(MouseEvent e)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. ..MoouusseeMoot ti ioonnLi isst teenneerr<br />

Si usted quiere manejar eventos y errastre y movimientos <strong>de</strong>l ratón, Implemente esta interfaz y sobre<br />

escriba los métodos. Cada uno <strong>de</strong> sus métodos recibe una Instancia <strong>de</strong> MouseEvent que <strong>de</strong>scribe el evento en<br />

<strong>de</strong>talle.<br />

public interface MouseMotionListener extends EventListener {<br />

74


public void mouseDragged(MouseEvent e);<br />

public void mouseMoved(MouseEvent e);<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. ..PPooi innt tEvveennt t<br />

PaintEvent contiene la información sobre los eventos <strong>de</strong> paint, el más importante <strong>de</strong> los <strong>de</strong>stinos Graficos es<br />

el objeto grphics g.<br />

public class PaintEvent extends ComponentEvent {<br />

public static final int PAINT_FIRST;<br />

public static final int PAINT_LAST;<br />

public static final int PAINT;<br />

public static final int UPDATE;<br />

Graphics g;<br />

public Graphics getGraphics( )<br />

public PaintEvent(Component source, int id, Graphics g)<br />

public String paramString( )<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. ..Teexxt tEvveennt t<br />

Esta clase contiene la información sobre los eventos <strong>de</strong>l componente <strong>de</strong> texto. TextEvent se entrega a<br />

TextLiStenerS cuando un evento <strong>de</strong>l texto ocurre, como una accion importante en un campo <strong>de</strong>l texto.<br />

public class TextEvent extends AWTEvent {<br />

public static final int TEXT FIRST;<br />

public static final int TEXTLAST;<br />

public static final int TEXT_VALUE_CHANGED;<br />

public String paramString( )<br />

public TextEvent(Object source, int id)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..eevveennt t. ..Teexxt tLi isst teenneerr<br />

Si usted quiere averiguar si algo en un TextComponent ha cambiado, Implemente esta interfaz y ha sobre<br />

escriba el método. Su método recibe una Instancia <strong>de</strong> TextEvent cuando un evento <strong>de</strong>l texto ocurre.<br />

public interface TextListener extends EventListener {<br />

public void textValueChanged(TextEvent e);<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Wi innddoowAddaappt teerr<br />

La clase coge los eventos <strong>de</strong> la ventana, como active o iconify. Si usted quiere manejar eventos como éstos,<br />

extienda esta clase y sobre escriba los métodos que le interesan. Cada uno <strong>de</strong> sus métodos recibe una Instancia <strong>de</strong><br />

WindowEvent que contiene la información <strong>de</strong>tallada sobre el evento.<br />

Cuando usted crea una aplicación Java, usted <strong>de</strong>be crear a un manejador <strong>de</strong> eventos para manejar el cerrando <strong>de</strong> la<br />

ventana, el evento <strong>de</strong>struye ventana, y terminacion <strong>de</strong> la aplicación. Si usted no crea a un manejador <strong>de</strong> eventos<br />

para estos eventos, la aplicación no se termianra cuando el usuario intenta cerrar la ventana.<br />

75


public abstract class WindowAdapter implements WindowListener {<br />

public void windowActivated(WindowEvent e)<br />

public void windowClosed(WindowEvent e)<br />

public void windowClosing(WindowEvent e)<br />

public void windowDeactivated(WindowEvent e)<br />

public void windowDeiconified(WindowEvent e)<br />

public void windowIconified(WindowEvent e)<br />

public void windowOpened(WindowEvent e)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Wi innddoowEvveennt t<br />

WindowEvent proporciona la información útil a WindowAdapters y WindowListeners cuando un evento <strong>de</strong> la<br />

ventana ocurre.<br />

public class WindowEvent extends ComponentEvent {<br />

public static final int WINDOW_FIRST;<br />

public static final int WINDOW_LAST;<br />

public static final int WINDOW_OPENED;<br />

public static final int WINDOW CLOSING;<br />

public static final int WINDOW CLOSED;<br />

public static final int WINDOWICONIFIED;<br />

public static final int WINDOW DEICONIFIED;<br />

public static final int WINDOW_ACTIVATED;<br />

public static final int WINDOW_DEACTIVATED;<br />

public Window getWindow( )<br />

public String paramString( )<br />

public WindowEvent(Window source, int id)<br />

}<br />

CLASSSS JJaavvaa. .aawt t. .eevveennt t. .Wi innddoowLi isst teenneerr<br />

<strong>Para</strong> manejar eventos <strong>de</strong> ventana, como cierre o iconify, Implemente esta interfaz y sobre escriba todos los<br />

métodos. Cada uno <strong>de</strong> sus métodos recibe una Instancia <strong>de</strong> WindowEvent que contiene la información <strong>de</strong>tallada<br />

sobre el evento.<br />

public interface WindowListener extends EventListener {<br />

public void windowopened(WindowEvent e);<br />

public void windowClosing(WindowEvent e);<br />

public void windowClosed(WindowEvent e);<br />

public void windowlconified(WindowEvent e);<br />

public void windowDeiconified(WindowEvent e);<br />

public void windowActivated(WindowEvent e);<br />

public void windowDeactivated(WindowEvent e);<br />

}<br />

76


El paquete java.awt.image contiene varias clases para el<br />

PPACKAGE<br />

manejo <strong>de</strong> imagenes y su procesamiento. Si usted<br />

JJaavvaa. .aawt t. .IImaaggee<br />

quiere que todas las imagenes sean cargadas y<br />

<strong>de</strong>splegar estas, no se preocupe por este paquete. El paquete se usa<br />

por el resto <strong>de</strong> awt y applet, pero pue<strong>de</strong> ser transparente (perdón por el<br />

juego <strong>de</strong> palabras) a usted. Nosotros sabemos que usted ha estado investigando para conseguir una Ilustracion <strong>de</strong><br />

la jerarquía <strong>de</strong> clases <strong>de</strong>l paquete java.awt.image, sin la dificultad extensa, se la presento a usted en la figura<br />

siguiente:<br />

Las conexiones <strong>de</strong> la red lentas complican el manejo <strong>de</strong> imágenes. Los diseñadores <strong>de</strong> Sun Microsystems<br />

crearon productores y consumidores para que las imágenes se transmitan asincrónicamente. Eso significa que usted<br />

no tiene que esperar por su applet para simplemente continuar porque contiene muchas imágenes (como el Duque<br />

Dando volteretas).<br />

Esto nos trae al asunto <strong>de</strong> productores <strong>de</strong> la imagen, observadores, y consumidores. Un productor <strong>de</strong> la imagen<br />

entrega una imagen; un consumidor recibe una imagen; y un observador realizan la observasion <strong>de</strong> los productores<br />

y consumidores.<br />

Los <strong>de</strong>talles <strong>de</strong> estas clases pue<strong>de</strong>n ponerse bastante pesados, estudie las clases <strong>de</strong>dicadamente si usted planea<br />

usarlos.<br />

CLASSSS JJaavvaa. ..aawt t. ..IImaaggee. ..ArreeaaAvveerraaggi innggSSccaal leeFFi il lt teerr<br />

AreaAveragingScaleFilter es un ImageFilter que usted usa junto con FilteredImageSource para <strong>de</strong>scascarar las<br />

imágenes. Cuando usted <strong>de</strong>scascara las imágenes a, se reproducen los pixeles, y cuando usted reduce las imágenes,<br />

se promedian los pixeles. Esta clase es muy similar a ReplicateScaleFilter, sólo que AreaAveragingScaleFilter<br />

consigue los pixeles en or<strong>de</strong>n para mirear bien la escala.<br />

public class AreaAveragingScaleFilter extends ReplicateScaleFilter {<br />

ColorMo<strong>de</strong>l mo<strong>de</strong>l, Object pixels, int off, int scansize)<br />

77


public AverageScaleFilter(int width, int height)<br />

private int[] calcRow( )<br />

private void makeAccumBuffers( )<br />

public void setHints(int hints)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, byte pixels[], int off, int scansize)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, int pixels[], int off, int scansize)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..IImaaggee. ..Cool loorrMood<strong>de</strong>el l<br />

Esta clase <strong>de</strong>fine un mo<strong>de</strong>lo <strong>de</strong> color. ColorMo<strong>de</strong>l es abstracto, pero usted no pue<strong>de</strong> crear una Instancia<br />

directamente <strong>de</strong> el. Otras clases en este paquete; use ColorMo<strong>de</strong>l.<br />

public abstract class ColorMo<strong>de</strong>l {<br />

protected int pixel bits;<br />

public abstract int getRed(int pixel);<br />

public abstract int getGreen(int pixel);<br />

public abstract int getBlue(int pixel);<br />

public abstract int getAlpha(int pixel);<br />

public ColorMo<strong>de</strong>l(int bits)<br />

public void finalize( )<br />

public int getPixelSize( )<br />

public int getRGB(int pixel)<br />

public static ColorMo<strong>de</strong>l getRGB<strong>de</strong>fault( )<br />

}<br />

CLASSSS JJaavvaa. .aawt t. ..IImaaggee. ..CrrooppIImaaggeeFFi il lt teerr<br />

CropImageFilter es un filtro <strong>de</strong> imagen que asigna a una imagen un<br />

tamaño particular. Usted pue<strong>de</strong> aplicar este filtro si usted quiere conseguir un subconjunto <strong>de</strong> una imagen.<br />

public class CroplmageFilter extends ImageFilter {<br />

int cropX;<br />

int cropY;<br />

int cropW;<br />

int cropH;<br />

public CroplmageFilter(int x, int y, int w, int h)<br />

public void setDimensions(int w, int h)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, byte pixels[], int off, int scansize)<br />

public void setPixels(int x, int y, int w, int h. ColorMo<strong>de</strong>l mo<strong>de</strong>l, int pixels[], int off, int scansize)<br />

public void setProperties(Hashtable props)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..IImaaggee. ..Di irreecct tCool loorrMood<strong>de</strong>el l<br />

Este mo<strong>de</strong>lo mapea ejemplares <strong>de</strong> color plano rojo, ver<strong>de</strong>, azul, y el alfa directamente.<br />

public class DirectColorMo<strong>de</strong>l extends ColorMo<strong>de</strong>l {<br />

public DirectColorMo<strong>de</strong>l(int bits, int rmask, int gmask, int bmask)<br />

public DirectColorMo<strong>de</strong>l(int bits, int rmask, int gmask, int bmask, int amask)<br />

78


final public int getAlpha(int pixel)<br />

final public int getAlphaMask( )<br />

final public int getBlue(int pixel)<br />

final public int getBlueMask( )<br />

final public int getGreen(int pixel)<br />

final public int getGreenMask( )<br />

final public int getRed(int pixel)<br />

final public int getRedMask( )<br />

final public int getRGB(int pixel)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .IImaaggee. .FFi il lt teerreeddIImaaggeeSSoouurrccee<br />

Use esta clase cuando usted quiere filtrar una imagen antes <strong>de</strong> que se use. Usted pue<strong>de</strong> querer ajustar algunos<br />

<strong>de</strong> los colores, por ejemplo. FilteredImageSource trabaja con el productor <strong>de</strong> la imagen y un filtro <strong>de</strong> la imagen.<br />

public class FilteredlmageSource implements ImageProducer {<br />

ImageProducer src;<br />

ImageFilter filter;<br />

public synchronized void addConsumer(ImageConsumer ic)<br />

public FilteredlmageSource(ImageProducer orig, ImageFilter imgf)<br />

public synchronized boolean isConsumer(ImageConsumer ic)<br />

public synchronized void removeConsumer(ImageConsumer ic)<br />

public void requestTopDownLeftRightResend(ImageConsumer ic)<br />

public void startProduction(ImageConsumer ic)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .IImaaggee. .IImaaggeeCoonnssuumeerr<br />

Esta interfaz <strong>de</strong>scribe los métodos requeridos por un consumidor <strong>de</strong> la imagen.<br />

public interface ImageConsumer {<br />

void setDimensions(int width, int height);<br />

void setProperties(Hashtable props);<br />

void setColorMo<strong>de</strong>l(ColorMo<strong>de</strong>l mo<strong>de</strong>l);<br />

void setHints(int hintflags);<br />

int RANDOMPIXELORDER;<br />

int TOPDOWNLEFTRIGHT;<br />

int COMPLETESCANLINES;<br />

int SINGLEPASS;<br />

int SINGLEFRAME;<br />

void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>la byte pixels[], int off, int scansize);<br />

void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, int pixels[], int off, int scansize);<br />

void imageComplete(int status);<br />

int IMAGEERROR;<br />

int SINGLEFRAMEDONE;<br />

int STATICIMAGEDONE;<br />

int IMAGEABORTED;<br />

}<br />

79


CLASSSS JJaavvaa. .aawt t. .IImaaggee. .IImaaggeeFFi il lt teerr<br />

Esta clase trabaja con FilteredImageSource para filtrar una imagen antes <strong>de</strong> que se use. Éste es la<br />

superclase <strong>de</strong> todos los filtros <strong>de</strong> la imagen; no hace ninguna filtración solo. Si usted quiere <strong>de</strong>finir su propio filtro<br />

<strong>de</strong> la imagen, extien<strong>de</strong> esta clase e Implemente los métodos <strong>de</strong> interés.<br />

public class ImageFilter implements ImageConsumer, Cloneable {<br />

protected ImageConsumer consumer;<br />

public Object clone()<br />

public ImageFilter getFilterlnstance(ImageConsumer ic)<br />

public void imageComplete(int status)<br />

public void resendTopDownLeftRight(ImageProducer ip)<br />

public void setColorMo<strong>de</strong>l(ColorMo<strong>de</strong>l mo<strong>de</strong>l)<br />

public void setDimensions(int width, int height)<br />

public void setHints(int hints)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, byte pixels[], int off, int scansize)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, int pixels[], int off, int scansize)<br />

public void setProperties(Hashtable props)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..IImaaggee. ..IImaaggeeObbsseerrvveerr<br />

Esta interfaz es usada por clases que reciben las imágenes y para obtener la información sobre la producción<br />

<strong>de</strong> la imagen. Graphics.drawImage() usa esta interfaz para <strong>de</strong>terminar si la imagen se ha entregado totalmente.<br />

public interface ImageObserver {<br />

public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height);<br />

public static final int WIDTH;<br />

public static final int HEIGHT;<br />

public static final int PROPERTIES;<br />

public static final int SOMEBITS;<br />

public static final int FRAMEBITS;<br />

public static final int ALLBITS;<br />

public static final int ERROR;<br />

public static final int ABORT;<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..IImaaggee. ..PPrroodduucceerr<br />

Esta clase abstracta <strong>de</strong>fine a un productor <strong>de</strong> imagen. El productor <strong>de</strong>be ser extendido por otras clases para<br />

ser útiles.<br />

public interface ImageProducer {<br />

public void addConsumer(ImageConsumer ic);<br />

public boolean isConsumer(ImageConsumer ic);<br />

public void removeConsumer(ImageConsumer ic);<br />

public void startProduction(ImageConsumer ic);<br />

public void requestTopDownLeftRightResend(ImageConsumer ic);<br />

}<br />

80


CLASSSS JJaavvaa. .aawt t. .IImaaggee. .IInnd<strong>de</strong>exxCool loorrMood<strong>de</strong>el l<br />

Use esta clase para mapear los colores con array fijos<br />

public class In<strong>de</strong>xColorMo<strong>de</strong>l extends ColorMo<strong>de</strong>l {<br />

final public int getAlpha(int pixel)<br />

final public void getAlphas(byte a[])<br />

final public int getBlue(int pixel)<br />

final public void getBlues(byte b[])<br />

final public int getGreen(int pixel)<br />

final public void getGreens(byte g[])<br />

final public int getMapSize()<br />

final public int getRed(int pixel)<br />

final public void getReds(byte r[])<br />

final public int getRGB(int pixel)<br />

final public int getTransparentPixel()<br />

public In<strong>de</strong>xColorMo<strong>de</strong>l(int bits, int size, byte r[], byte g[], byte b[])<br />

public In<strong>de</strong>xColorMo<strong>de</strong>l(int bits, int size, byte r[], byte g[], byte b[], int trans)<br />

public In<strong>de</strong>xColorMo<strong>de</strong>l(int bits, int size, byte r[], byte g[], byte b[], byte a[])<br />

public In<strong>de</strong>xColorMo<strong>de</strong>l(int bits, int size, byte cmap[], int start, boolean hasalpha)<br />

public In<strong>de</strong>xColorMo<strong>de</strong>l(int bits, int size, byte cmap[], int start, boolean hasalpha, int trans)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..IImaaggee. ..MeemoorryyIImaaggeeSSoouurrccee<br />

Este productor <strong>de</strong> la imagen pue<strong>de</strong> crear una imagen <strong>de</strong> una serie <strong>de</strong> pixeles en la memoria. Usted pue<strong>de</strong> usar<br />

esta clase para crear sus propias imágenes para la animación o construir una clase que pue<strong>de</strong> leer las imágenes<br />

guardadas en un formato propietario.<br />

public class MemorylmageSource implements ImageProducer {<br />

int width;<br />

int height;<br />

ColorMo<strong>de</strong>l mo<strong>de</strong>l;<br />

Object pixels;<br />

int pixeloffset;<br />

int pixelscan;<br />

Hashtable properties;<br />

Vector theConsumers;<br />

boolean animating;<br />

boolean fullbuffers;<br />

public synchronized void addConsumer(ImageConsumer ic)<br />

public synchronized boolean isConsumer(ImageConsumer ic)<br />

public MemorylmageSource(int w, int h, ColorMo<strong>de</strong>l cm, byte[] pix, int off, int scan)<br />

public MemorylmageSource(int w, int h, ColorMo<strong>de</strong>l cm, byte[] pix, int off, int scan, Hashtable props)<br />

public MemorylmageSource(int w, int h, ColorMo<strong>de</strong>l cm, int[] pix, int off, int scan)<br />

public MemorylmageSource(int w, int h, ColorMo<strong>de</strong>l cm, int[] pix, int off, int scan, Hashtable props)<br />

public MemorylmageSource(int w, int h, int pix[1, int off, int scan)<br />

public MemorylmageSource(int w, int h, int pix[1, int off, int scan, Hashtable props)<br />

public void newPixels( )<br />

81


public synchronized void newPixels(int x, int y, int w, int h)<br />

public synchronized void newPixels(int x, int y, int w, int h, boolean framenotify)<br />

public synchronized void newPixels(byte[] newpix, ColorMo<strong>de</strong>l newmo<strong>de</strong>l, int offset, int scansize)<br />

public synchronized void newPixels(int[1 newpix, ColorMo<strong>de</strong>l newmo<strong>de</strong>l, int offset, int scansize)<br />

public synchronized void removeConsumer(ImageConsumer ic)<br />

public void requestTopDownLeftRightResend(ImageConsumer ic)<br />

public synchronized void setAnimated(boolean animated)<br />

public synchronized void setFullBufferUpdates(Boolean fullbuffers)<br />

public void startProduction(ImageConsumer ic)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. ..IImaaggee. ..PPi ixxeel lGrraabbbbeerr<br />

¡Aférrese a sus pixeles - aquí viene PixelGrabber! Esta clase pequeña mala hace lo contrario <strong>de</strong><br />

MemoryImageSource.PixelGrabber toma un objeto imagen y produce una serie <strong>de</strong> valores <strong>de</strong>l pixel.<br />

public class PixelGrabber implements ImageConsumer {<br />

ImageProducer producer;<br />

int dstX;<br />

int dstY;<br />

int dstW;<br />

int dstH;<br />

ColorMo<strong>de</strong>l imageMo<strong>de</strong>l;<br />

byte[] bytePixels;<br />

int[] intPixels;<br />

int dstOff; int dstScan;<br />

public synchronized void abortGrabbing()<br />

public synchronized ColorMo<strong>de</strong>l getColorMo<strong>de</strong>l()<br />

public synchronized int getHeight()<br />

public synchronized Object getPixels( )<br />

public synchronized int getStatus()<br />

public synchronized int getWidth()<br />

public boolean grabPixels() throws InterruptedException<br />

public synchronized boolean grabPixels(long ms) throws InterruptedExceptios<br />

public synchronized void imageComplete(int status)<br />

public PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)<br />

public PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)<br />

public PixelGrabber(Image img, int x, int y, int w, int h, boolean forceRGB)<br />

public void setColorMo<strong>de</strong>l(ColorMo<strong>de</strong>l mo<strong>de</strong>l)<br />

public void setDimensions(int width, int height)<br />

public void setHints(int hints)<br />

public void setPixels(int srcX, int srcY, int srcW, int srcH, ColorMo<strong>de</strong>l mo<strong>de</strong>l, byte pixels[], int srcOff, int<br />

srcScan)<br />

public void setPixels(int srcX, int srcY, int srcW, int srcH, ColorMo<strong>de</strong>l mo<strong>de</strong>l, int pixeis[], int srcOff, int<br />

srcScan)<br />

public void setProperties(Hashtable props)<br />

public synchronized void startGrabbing()<br />

public synchronized int status() }<br />

82


CLASSSS JJaavvaa. .aawt t. .IImaaggee. .RGBIImaaggeeFFi il lt teerr<br />

RGBImageFilter, un filtro <strong>de</strong> imagen, pue<strong>de</strong> modificar valores <strong>de</strong> pixel usando una Instancia <strong>de</strong> método en<br />

lugar <strong>de</strong> una serie fija. Si usted quiere filtrar una imagen que usa alguna función arbitraria, extien<strong>de</strong> esta clase y<br />

sobre escriba el metodo filterRGB(). Su método sera llamado por cada pixel eso es efectuado por un<br />

ImageProducer<br />

public abstract class RGBImageFilter extends ImageFilter {<br />

protected ColorMo<strong>de</strong>l origmo<strong>de</strong>l;<br />

protected ColorMo<strong>de</strong>l newmo<strong>de</strong>l;<br />

protected boolean canFilterln<strong>de</strong>xColorMo<strong>de</strong>l;<br />

public abstract int filterRGB(int x, int y, int rgb);<br />

public In<strong>de</strong>xColorMo<strong>de</strong>l filterIn<strong>de</strong>xColorMo<strong>de</strong>l(In<strong>de</strong>xColorMo<strong>de</strong>l icm)<br />

public void filterRGBPixels(int x, int y, int w, int h, int pixels[], int off, int scansize)<br />

public void setColorMo<strong>de</strong>l(ColorMo<strong>de</strong>l mo<strong>de</strong>l)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, byte pixels[], int off, int scansize)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, int pixeis[], int off, int scansize)<br />

public void substituteColorMo<strong>de</strong>l(ColorMo<strong>de</strong>l oldcm, ColorMo<strong>de</strong>l newcm)<br />

}<br />

CLASSSS JJaavvaa. ..aawt t. .IImaaggee. .Reeppl li iccaat teeSSccaal leeFFi il lt teerr<br />

ReplicateScaleFilter, un filtro <strong>de</strong> imagen, trabaja junto con FilteredImageSource para <strong>de</strong>scascarar las imágenes.<br />

Cuando usted escala las imágenes, se reproducen los pixeles. Cuando usted reduce las imágenes, se promedian los<br />

pixeis.<br />

public class ReplicateScaleFilter extends ImageFilter {<br />

protected int srcWidth;<br />

protected int srcHeight;<br />

protected int <strong>de</strong>stWidth;<br />

protected int <strong>de</strong>stHeight;<br />

protected int srcrows[];<br />

protected int srccols[];<br />

protected Object outpixbuf;<br />

private void calculateMaps()<br />

public ReplicateScaleFilter(int width, int height)<br />

public void setDimensions(int w, int h)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, byte pixeis[], int off, int scansize)<br />

public void setPixels(int x, int y, int w, int h, ColorMo<strong>de</strong>l mo<strong>de</strong>l, int pixeis[], int off, int scansize)<br />

public void setProperties(Hashtable props)<br />

}<br />

83

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!