552
Capítulo 12 Gráfi cos y Java 2D™
tipo de letra hasta que éste se modifi que. La información de cada tipo de letra se muestra en las líneas 17, 21, 25,
30 y 31, usando el método
drawString
. Observe que la coordenada que se pasa a
drawString
corresponde a
la esquina inferior izquierda de la línea base del tipo de letra.En la línea 28 se cambia el color de dibujo a rojo,
por lo que la siguiente cadena que se muestra aparece en color rojo. En las líneas 30 a 31 se muestra información
acerca del objeto
Font
fi nal. El método
getFont
de la clase
Graphics
devuelve un objeto
Font
que representa el
tipo de letra actual. El método
getName
devuelve el nombre del tipo de letra actual como una cadena. El método
getSize
devuelve el tamaño del tipo de letra, en puntos.
La fi gura 12.12 contiene el método
main
, que crea un objeto
JFrame
. Agregamos un objeto
FontJPanel
a
este objeto
JFrame
(línea 15), el cual muestra los gráfi cos creados en la fi gura 12.11.
Observación de ingeniería de software 12.2
Para cambiar el tipo de letra, debe crear un nuevo objeto
Font
. Los objetos
Font
son inmutables; la clase
Font
no
tiene métodos establecer para modifi car las características del tipo de letra actual.
Métrica de los tipos de letra
En ocasiones es necesario obtener información acerca del tipo de letra actual para dibujar, como el nombre, el
estilo y el tamaño del tipo de letra. En la fi gura 12.10 se sintetizan varios métodos de
Font
que se utilizan para
obtener información sobre el tipo de letra. El método
getStyle
devuelve un valor entero que representa el estilo
actual. El valor entero devuelto puede ser
Font.PLAIN
,
Font.ITALIC
,
Font.BOLD
o la combinación de
Font.
ITALIC
y
Font.BOLD
. El método
getFamily
devuelve el nombre de la familia a la que pertenece el tipo de letra
actual. El nombre de la familia del tipo de letra es específi co de la plataforma. También hay métodos de
Font
disponibles para probar el estilo del tipo de letra actual, los cuales se sintetizan también en la fi gura 12.10. Los
métodos
isPlain
,
isBold
e
isItalic
devuelven
true
si el estilo del tipo de letra actual es simple, negrita o
cursiva, respectivamente.
Algunas veces es necesario conocer información precisa acerca de la métrica de un tipo de letra, como la
altura
, el
descendente
(la distancia entre la base de la línea y el punto inferior del tipo de letra), el
ascendente
(la cantidad que se eleva un carácter por encima de la base de la línea) y el
interlineado
(la diferencia entre el
descendente de una línea de texto y el ascendente de la línea de texto que está debajo; es decir, el espaciamiento
entre líneas). En la fi gura 12.13 se muestran algunos elementos comunes de la
métrica de los tipos de letras
.
La clase
FontMetrics
declara varios métodos para obtener información métrica de los tipos de letra. En la
fi gura 12.14 se sintetizan estos métodos, junto con el método
getFontMetrics
de la clase
Graphics
. La aplica-
ción de las fi guras 12.15 y 12.16 utiliza los métodos de la fi gura 12.14 para obtener la información métrica de
dos tipos de letra.
En la línea 15 de la fi gura 12.15 se crea y se establece el tipo de letra actual para dibujar en
SansSerif
,
negrita, 12 puntos. En la línea 16 se utiliza el método
getFontMetrics
de
Graphics
para obtener el objeto
FontMetrics
del tipo de letra actual. En la línea 17 se imprime la representación
String
del objeto
Font
devuel-
to por
g.getFont()
. En las líneas 18 a 21 se utilizan los métodos de
FontMetrics
para obtener el ascendente,
descendente, altura e interlineado del tipo de letra.
En la línea 23 se crea un nuevo tipo de letra
Serif
, cursiva, 14 puntos. En la línea 24 se utiliza una segunda
versión del método
getFontMetrics
de
Graphics
, la cual recibe un argumento
Font
y devuelve su correspon-
diente objeto
FontMetrics
. En las líneas 27 a 30 se obtiene el ascendente, descendente, altura e interlineado de
ese tipo de letra. Observe que la métrica es ligeramente distinta para cada uno de los tipos de letra.
ascendente
altura
interlineado
descendente
línea base
Figura 12.13
| Métrica de los tipos de letra.
12_MAQ_CAP_12_DEITEL.indd552
4/19/081:26:57AM