Mega Code Archive

 
Categories / Java Tutorial / 2D Graphics
 

Draw font metrics

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski.  Copyright (c) 1997 O'Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class metrics extends JPanel {     metrics () {         setFont (new Font ("TimesRoman", Font.BOLD | Font.ITALIC, 48));         setSize (225, 175);     }     public void paint (Graphics g) {         g.translate (100, 100);         FontMetrics fm = null;         int ascent, descent, leading, width1, width2, height;         String string1 = "dsdas";         String string2 = "asdf";         int xPos = 25, yPos = 50;         fm = g.getFontMetrics();         ascent  = fm.getAscent();         descent = fm.getDescent();         leading = fm.getLeading();         height  = fm.getHeight();         width1  = fm.stringWidth (string1);         width2  = fm.stringWidth (string2);         g.drawString (string1, xPos, yPos);         g.drawLine (xPos, yPos - ascent - leading,                     xPos + width1, yPos - ascent - leading);         g.drawLine (xPos, yPos - ascent,                     xPos + width1, yPos - ascent);         g.drawLine (xPos, yPos,                     xPos + width1, yPos);         g.drawLine (xPos, yPos + descent,                     xPos + width1, yPos + descent);         g.drawString (string2, xPos, yPos+height);         g.drawLine (xPos, yPos - ascent - leading + height,                     xPos + width2, yPos - ascent - leading + height);         g.drawLine (xPos, yPos - ascent + height,                     xPos + width2, yPos - ascent + height);         g.drawLine (xPos, yPos + height,                     xPos + width2, yPos + height);         g.drawLine (xPos, yPos + descent + height,                     xPos + width2, yPos + descent + height);     }     public static void main (String[] args) {       JFrame f = new JFrame();       f.add(new metrics());       f.setSize(300,300);       f.setVisible(true);     } }