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
- TAGS
- completo
- grupo
- cedip
- cedip.edu.mx
¡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