Graphics2D: getFontRenderContext() : Graphics2D « java.awt « Java by API






Graphics2D: getFontRenderContext()


import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.font.FontRenderContext;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextAttribute;
import java.awt.font.TextLayout;
import java.text.AttributedString;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.swing.JComponent;
import javax.swing.JFrame;



public class MainClass {

  public static void main(String[] a) throws Exception {
    JFrame jf = new JFrame("Demo");
    Container cp = jf.getContentPane();
    TextFormat tl = new TextFormat();
    cp.add(tl);
    jf.setSize(300, 200);
    jf.setVisible(true);
  }
}
class TextFormat extends JComponent {
   List layouts;
   Font font = new Font("SansSerif", Font.BOLD, 42);
   String text = "The quick brown fox jumped over the lazy cow";

  public void paint(Graphics g) {
    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();
    }
  }

  private void getLayouts(Graphics g) {
    layouts = new ArrayList();

    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);
    }
  }

  
}
           
       








Related examples in the same category

1.Graphics2D: draw(Shape s)
2.Graphics2D: drawGlyphVector(GlyphVector g, float x, float y)
3.Graphics2D: drawString(String str, int x, int y)
4.Graphics2D: drawString(String str, int x, int y) (Unicode)
5.Graphics2D: fill(Shape s)
6.Graphics2D: rotate(double theta)
7.Graphics2D: scale(double sx, double sy)
8.Graphics2D: setComposite(Composite comp)
9.Graphics2D: setPaint(Paint paint)
10.Graphics2D: setRenderingHints(Map hints)
11.Graphics2D: setRenderingHint(Key hintKey, Object hintValue)
12.Graphics2D: setStroke(Stroke s)
13.Graphics2D: transform(AffineTransform Tx)
14.Graphics2D: translate(int x, int y)