El siguiente applet posiciona un párrafo de texto con estulo dentro de un componente, usando LineBreakMeasurer, TextLayout y AttributedCharacterIterator.El código completo del applet está en LineBreakSample.java.
Esta es una imagen del GUI del applet. Para ajecutar el appler, pulsa sobre ella. El applet aparecerá en una nueva ventana del navegador.El siguiente código crea un bucle con la cadena vanGogh. El inicio y final del bucle se recupera y se crea una nueva línea.
AttributedCharacterIterator paragraph = vanGogh.getIterator(); paragraphStart = paragraph.getBeginIndex(); paragraphEnd = paragraph.getEndIndex(); lineMeasurer = new LineBreakMeasurer(paragraph, new FontRenderContext(null, false, false));El tamaño de la ventana se utiliza para determinar dónde se debería romper la línea y se crea un objeto TextLayout por cada línea del párrafo.Dimension size = getSize(); float formatWidth = (float) size.width; float drawPosY = 0; lineMeasurer.setPosition(paragraphStart); while (lineMeasurer.getPosition() < paragraphEnd) { TextLayout layout = lineMeasurer.nextLayout(formatWidth); // Move y-coordinate by the ascent of the layout. drawPosY += layout.getAscent(); /* Compute pen x position. If the paragraph is rogth-to-left, we want to align the TextLayouts to the right edge of the panel. */ float drawPosX; if (layout.isRIGHTToLEFT()) { drawPosX = 0; } else { drawPosX = formatWidth - layout.getAdvance(); } // Draw the TextLayout at (drawPosX, drawPosY). layout.draw(graphics2D, drawPosX, drawPosY); // Move y-coordinate in preparation for next layout. drawPosY += layout.getDescent() + layout.getLeading(); }