TextFormatpublic 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. |
Fields Summary |
---|
protected String | textThe text of this line | protected Font | fontThe Font | List | layoutsThe TextLayouts corresponding to "text" |
Methods Summary |
---|
public java.awt.Font | getFont()
return font;
| private void | getLayouts(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.String | getText()
return text;
| public static void | main(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 void | paint(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 void | setFont(java.awt.Font f)
font = f;
| public void | setText(java.lang.String t)
text = t;
|
|