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