Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 

A display of text, formatted by us instead of by AWT/Swing Java code example - Click here to copy ->>>

   Can't find what you're looking for? Try our search:

Really working examples categorized by API, package, class. You can compile and run our examples right away! Not from source code for Java projects - only working examples! Copy, compile and run!

Code:

 
/*
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002.
 * All rights reserved. Software written by Ian F. Darwin and others.
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $
*/



import java.awt.Component;
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.JFrame;

/** A display of text, formatted by us instead of by AWT/Swing.
 * <P>
 * 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 $
 */
public class TextFormat extends Component {

   /** The text of this line */
   protected String text;
   /** The Font */
   protected Font font;
   /** The TextLayouts corresponding to "text" */
   List layouts;

   public Font getFont() {
      return font;
   }

   public void setFont(Font f) {
      font = f;
   }

   public String getText() {
      return text;
   }
   public void setText(String t) {
      text = t;
   }

   public void paint(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;
      }
   }

   /** Lazy evaluation of the List of TextLayout objects corresponding
    * to this MText. Some things are approximations!
    */
   private void getLayouts(Graphics g) {
      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 static void main(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);
   }
}

 
 



References.

The list of classes which were used on this page you can find below. The links to Java API contain official SUN documentation about all used classes.




[ Go Back ]



Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy