Gráficos con Java 2D

Cuando necesitemos mostrar texto, podemos usar uno de los componentes orientados a texto, como los componentes Como usar Labels o Usar Componentes de Texto de Swing. Cuando se utiliza un componente de texto, mucho del trabajo lo hacen por nosotros--por ejemplo, los objetos JTextComponent proporcionan soporte interno para chequeo de pulsaciones y para mostrar texto internacional.

Si queremos mostrar una cadena de texto est�tica, podemos dibujarla directamente a trav�s de Graphics2D usando el m�todo drawString. Para especificar la fuente, podemos usar el m�todo setFont de Graphics2D.

Si queremos implementar nuestras propias rutinas de edici�n de texto o necesitamos m�s control sobre la distribucci�n del texto que la que proporcionan los componentes de texto, podemos usar las clases del paquete java.awt.font.

.�Fuentes

Las formas que una fuente usa para representar los caracteres de una cadena son llamadas glyphs. Un caracter particular o una combinaci�n de caracteres podr�a ser representada como uno o m�s glyphs. Por ejemplo, � podr�a ser representado por dos glyphs, mientras que la ligadura fi podr�a ser representada por un s�lo glyph.

Se puede pensar en una fuente como en una colecci�n de glyphs. Una sola fuente podr�a tener muchas caras, como pesada, m�dia, obl�qua, g�tica y regular, Todas las caras de una fuente tienen caracter�sticas tipogr�ficas similares y pueden ser reconocidas como miembros de la misma familia. En otras palabras, una colecci�n de glyphs con un estilo particular forma una cara de fuente; y una colecci�n de caras de fuentes forman una familia de fuentes; y el conjunto de familias de fuentes forman el juego de fuentes disponibles en el sistema.

Cuando se utiliza el API 2D de Java, se especifican las fuentes usando un ejemplar de Font. Podemos determinar las fuentes disponibles en el sistema llamando al m�todo est�tico GraphicsEnvironment.getLocalGraphicsEnvironment y preguntando al GraphicsEnvironment devuelto. El m�todo getAllFonts devuelve un array que contiene ejemplares Font para todas las fuentes disponibles en el sistema; getAvailableFontFamilyNames devuelve una lista de las familias de fuentes disponibles.

GraphicsEnvironment tambi�n describe la colecci�n de dispositivos de dibujo de la plataforma, como pantallas e impresoras, que un programa Java puede utilizar. Esta informaci�n es usada cuando el sistema realiza la conversi�n del espacio de usuario al espacio de dispositivo durante el dibujo.

Nota:

En el JDK 1.1, las fuentes se describ�an con nombres l�gicos que eran mapeados en diferentes caras de fuentes, dependiendo de las fuentes que estaban disponibles en una plataforma particular. Por razones de compatibilidad, Graphics2D tambi�n soporta la especificaci�n de fuentes por el nombre l�gico. Para obtener una lista de los nombres l�gicos de la fuentes, se puede llamar a java.awt.Toolkit.getFontList.

.�Distribuci�n de Texto

Antes de poder mostrar el texto, debe ser distribuido para que los caracteres sean representados por los glyphs apropiados en las posiciones apropiadas. Si estamos usando Swing, podemos dejar que JLabel o JTextComponent manejen la distribuci�n de texto por nosotros. JTextComponent soporta texto bidireccional y est� dise�ada para manejar las necesidades de la mayor�a de las aplicaciones internacionales. Para m�s informaci�n sobre el uso de los componentes de texto Swing, puedes ver Usar Componentes de Texto.

Si no estamos usando un componente de texto Swing para mostrar el texto autom�ticamente, podemos usar uno de los mecanismos de Java 2D para manejar la distribuci�n de texto.

  • Si queremos implementar nuestras propias rutinas de edici�n de texto, podemos usar la clase TextLayout para manejar la distribuci�n de texto, iluminaci�n y detecci�n de pulsaci�n. Las facilidades proporcionadas por TextLayout manejan muchos casos comunes, incluyendo cadenas con fuentes mezcladas, lenguajes mezclados y texto bidireccinal. Para m�s informaci�n sobre TextLayout, puedes ver Manejar la disttribuci�n de Texto.
  • Si queremos un control total sobre la forma y posici�n de nuestro texto, podemos construir nuestro propio objeto GlyphVector usando Font y renderizando cada GlyphVector a trav�s de Graphics2D. Para m�s informaci�n sobre la implementaci�n de nuestro propio mecanismo de distribuci�n de texto, puedes ver Implementar un Mecanismo Personalizado de Distribuci�n de Texto

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO