En las líneas 15 y 16 de la fi gura 12.27 se crean dos arreglos 

int

 y se utilizan para especifi car los puntos del 

objeto

Polygon

 llamado 

poligono1

. La llamada al constructor de 

Polygon

 en la línea 17 recibe el arreglo 

valo-

resX

, el cual contiene la coordenada 

x de cada punto; el arreglo 

valoresY

, que contiene la coordenada 

y de cada 

punto y el número 6 (el número de puntos en el polígono). En la línea 18 se muestra 

poligono1

 al pasarlo como 

argumento para el método 

drawPolygon

 de 

Graphics

.

En las líneas 21 y 22 se crean dos arreglos 

int

 y se utilizan para especifi car los puntos de una serie de líneas 

conectadas. El arreglo 

valoresX2

 contiene la coordenada 

x de cada punto y el arreglo 

valoresY2

 contiene la coor-

denada

y de cada punto. En la línea 23 se utiliza el método 

drawPolyline

 de 

Graphics

 para mostrar la serie de 

líneas conectadas que se especifi can mediante los argumentos 

valoresX2

,

valoresY2

 y 

7

 (el número de puntos).

En las líneas 26 y 27 se crean dos arreglos 

int

 y se utilizan para especifi car los puntos de un polígono. El 

arreglo 

valoresX3

 contiene la coordenada 

x de cada punto y el arreglo 

valoresY3

 contiene la coordenada 

y de 

cada punto. En la línea 28 se muestra un polígono al pasar al método 

fillPolygon

 de 

Graphics

 los dos arreglos 

(

valoresX3

 y 

valoresY3

) y el número de puntos a dibujar (

4

).

Error común de programación 12.1

Se lanzará una excepción 

ArrayIndexOutOfBoundsException

 si el número de puntos especifi cados en el tercer 

argumento del método 

drawPolygon

 o del método 

fillPolygon

 es mayor que el número de elementos en los arreglos 

de las coordenadas que especifi can el polígono a mostrar.

En la línea 31 se crea el objeto 

Polygon

 llamado 

poligono2

, sin puntos. En las líneas 32 a 36 se utiliza el 

método

addPoint

 de 

Polygon

 para agregar pares de coordenadas 

x y yal objeto 

Polygon

. En la línea 37 se mues-

tra el objeto 

Polygon

 llamado 

poligono2

, al pasarlo al método 

fillPolygon

 de 

Graphics

.

12.8 La API Java 2D

La

API Java 2D

 proporciona herramientas avanzadas para gráfi cos bidimensionales, para los programadores que 

requieren manipulaciones gráfi cas detalladas y complejas. La API incluye características para procesar arte lineal, 
texto e imágenes en los paquetes 

java.awt

,

java.awt.image

,

java.awt.color

,

java.awt.font

,

java.awt.

geom

,

java.awt.print

 y 

java.awt.image.renderable

. Las herramientas de la API son muy extensas como 

para cubrirlas todas en este libro. Para ver las generalidades acerca de estas herramientas, consulte la demostración 
de Java 2D (que veremos en el capítulo 20, Introducción a las applets de Java) o visite la página Web 

java.sun.

com/products/java-media/2D/index.html

. En esta sección veremos las generalidades de varias herramientas 

de Java 2D.

El dibujo con la API Java 2D se logra mediante el uso de una referencia 

Graphics2D

 (paquete 

java.awt

), que 

es una subclase abstracta de la clase 

Graphics

, por lo que tiene todas las herramientas para gráfi cos que se demos-

traron anteriormente en este capítulo. De hecho, el objeto en sí utilizado para dibujar en todos los métodos 

paint-

Component

 es una instancia de una subclase de 

Graphics2D

 que se pasa al método 

paintComponent

 y se utiliza 

mediante la superclase 

Graphics

. Para acceder a las herramientas de 

Graphics2D

, debemos convertir la referencia 

Graphics

 (

g

) que se pasa a 

paintComponent

 en una referencia 

Graphics2D

, mediante una instrucción como:

Graphics2D g2d = ( Graphics2D ) g;

Los siguientes dos ejemplos utilizan esta técnica.

Líneas, rectángulos, rectángulos redondeados, arcos y elipses

En el siguiente ejemplo se muestran varias fi guras de Java 2D del paquete 

java.awt.geom

, incluyendo a 

Line2D.

Double

,

Rectangle2D.Double

,

RoundRectangle2D.Double

,

Arc2D.Double

y

Ellipse2D.Double

. Observe la 

sintaxis de cada uno de los nombres de las clases. Cada una de estas clases representa una fi gura con las dimensio-
nes especifi cadas como valores de punto fl otante con doble precisión. Hay una versión separada de cada fi gura, 
representada con valores de punto fl otante con precisión simple (como 

Ellipse2D.Float

). En cada caso, 

Double

es una clase 

static

 anidada de la clase que se especifi ca a la izquierda del punto (por ejemplo, 

Ellipse2D

). Para 

utilizar la clase 

static

 anidada, simplemente debemos califi car su nombre con el nombre de la clase externa.

En las fi guras 12.29 y 12.30, dibujamos fi guras de Java 2D y modifi camos sus características de dibujo, como 

cambiar el grosor de línea, rellenar fi guras con patrones y dibujar líneas punteadas. Éstas son sólo algunas de las 
muchas herramientas que proporciona Java 2D.

12.8 La API Java 2D 

563

12_MAQ_CAP_12_DEITEL.indd563

4/19/081:27:02AM