FileDocCategorySizeDatePackage
TextFormat.javaAPI DocExample2847Thu Mar 25 21:34:30 GMT 2004None

TextFormat

public class TextFormat extends Component
A display of text, formatted by us instead of by AWT/Swing.

This program is distributed under the terms of the accompanying COPYRIGHT.txt file (which is NOT the GNU General Public License). Please read it. Your use of the software constitutes acceptance of the terms in the COPYRIGHT.txt file.

author
Ian F. Darwin
version
$Id: TextFormat.java,v 1.3 2004/03/26 03:34:30 ian Exp $

Fields Summary
protected String
text
The text of this line
protected Font
font
The Font
List
layouts
The TextLayouts corresponding to "text"
Constructors Summary
Methods Summary
public java.awt.FontgetFont()

		return font;
	
private voidgetLayouts(java.awt.Graphics g)
Lazy evaluation of the List of TextLayout objects corresponding to this MText. Some things are approximations!

		layouts = new ArrayList();

		Point pen = new Point(10, 20);
		Graphics2D g2d = (Graphics2D) g;
		FontRenderContext frc = g2d.getFontRenderContext();

		AttributedString attrStr = new AttributedString(text);
		attrStr.addAttribute(TextAttribute.FONT, font, 0, text.length());   
		LineBreakMeasurer measurer = new LineBreakMeasurer(
			attrStr.getIterator(), frc);
		float wrappingWidth;

		wrappingWidth = getSize().width - 15;

		while (measurer.getPosition() < text.length()) {
			TextLayout layout = measurer.nextLayout(wrappingWidth);
			layouts.add(layout);
		}
	
public java.lang.StringgetText()

		return text;
	
public static voidmain(java.lang.String[] args)

		JFrame jf = new JFrame("Demo");
		Container cp = jf.getContentPane();
		TextFormat tl = new TextFormat();
		tl.setFont(new Font("SansSerif", Font.BOLD, 42));
		tl.setText("The quick brown fox jumped over the lazy cow");
		cp.add(tl);
		jf.setSize(300, 200);
		jf.setVisible(true);
	
public voidpaint(java.awt.Graphics g)

		if (text == null || text.length() == 0)
			return;
		if (layouts == null)
			getLayouts(g);

		Point pen = new Point(0, 0);
		Graphics2D g2d = (Graphics2D)g;
		g2d.setColor(java.awt.Color.black);	// or a property
		g2d.setFont(font);

		Iterator it = layouts.iterator();
		while (it.hasNext()) {
			TextLayout layout = (TextLayout) it.next();
			pen.y += (layout.getAscent());
			g2d.setFont(font);
			layout.draw(g2d, pen.x, pen.y);
			pen.y += layout.getDescent();
			//pen.y += leading;
		}
	
public voidsetFont(java.awt.Font f)

		font = f;
	
public voidsetText(java.lang.String t)

		text = t;