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