14.04.2013 Views

Gráficos Con Java 2D - Abaco

Gráficos Con Java 2D - Abaco

Gráficos Con Java 2D - Abaco

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Gráficos</strong> con <strong>Java</strong> <strong>2D</strong><br />

En esta página:<br />

●<br />

Dibujar Múltiples Líneas de Texto<br />

❍<br />

Ejemplo: LineBreakSample<br />

Dibujar Múltiples Líneas de Texto<br />

Tutor<strong>Java</strong> recomienda...<br />

Si tenemos un párrafo de texto con estilo que queremos que quepa dentro de una anchura<br />

especifica, podemos usar LineBreakMeasurer, que permite que el texto con estilo se rompa en<br />

líneas que caben dentro de un espacio visual. Como hemos aprendido en Mostrar <strong>Gráficos</strong> con<br />

Graphics<strong>2D</strong>, un objeto TextLayout representa datos de caracteres con estilo, que no se pueden<br />

cambiar, pero también permite acceder a la información de distribución. Los métodos getAscent y<br />

getDescent de TextLayout devuelven información sobre la fuente usada para posicionar las líneas<br />

en el componente. El texto se almacena como un AttributedCharacterIterator para que los<br />

atributos de fuente y tamaño de punto puedan ser almacenados con el texto.<br />

Ejemplo: LineBreakSample<br />

El siguiente applet posiciona un párrafo de texto con estilo dentro de un componente, usando<br />

LineBreakMeasurer, TextLayout y AttributedCharacterIterator.<br />

Esta es una imagen del GUI del applet. Para ajecutar el applet, pulsa sobre ella. El applet<br />

aparecerá en una nueva ventana del navegador.<br />

El código completo del applet está en LineBreakSample.java .<br />

El siguiente código crea un bucle con la cadena vanGogh. El inicio y final del bucle se recupera y se<br />

crea una nueva línea.<br />

AttributedCharacterIterator paragraph = vanGogh.getIterator();<br />

paragraphStart = paragraph.getBeginIndex();<br />

paragraphEnd = paragraph.getEndIndex();<br />

lineMeasurer = new LineBreakMeasurer(paragraph,<br />

new FontRender<strong>Con</strong>text(null, false, false));<br />

El tamaño de la ventana se utiliza para determinar dónde se debería romper la línea y se crea un<br />

objeto TextLayout por cada línea del párrafo.<br />

Dimension size = getSize();<br />

float formatWidth = (float) size.width;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!