devxlogo

Font Metrics

Font Metrics

Font properties that affect the rendering of strings are represented by the FontMetrics class. You can determine the FontMetrics of the current font in a graphics context with Graphics.getFontMetrics(). If all you want to know is the estimated width of a string in pixels, FontMetrics provides a stringWidth() method for just this purpose. However, a more general method is also provided, called getStringBounds(). This method will return a Rectangle2D instance representing the bounding box of a string when drawn in the given Font. The following program shows how to use this information to draw a rectangle around a string:

 import java.awt.*;import java.awt.event.*;import java.awt.geom.*;public class AWTStringSize extends Frame {  private String __string;  public void paint(Graphics g) {    FontMetrics metrics = g.getFontMetrics();    Rectangle2D rect;    int x, y;    // Get dimensions of string    rect = metrics.getStringBounds(__string, g);    x = (getWidth() - (int)rect.getWidth())/2;    y = (getHeight() - (int)rect.getHeight())/2;    g.drawString(__string, x, y);    // Draw a box slightly outside of the bounds of the string    g.drawRect(x - 1, y - (int)rect.getHeight() - 1,               (int)rect.getWidth() + 2,               (int)rect.getHeight() + 2);                   }  public AWTStringSize(String string) {    __string = string;  }  public static final void main(String[] args) {    AWTStringSize frame;    if(args.length != 1) {      System.err.println("Usage: AWTStringSize string");      return;    }    frame = new AWTStringSize(args[0]);    frame.addWindowListener(new WindowAdapter() {      public void windowClosing(WindowEvent e) {        Window window = e.getWindow();        window.setVisible(false);        window.dispose();        System.exit(0);      }      });    frame.setSize(400, 400);    frame.setVisible(true);  }}
See also  How to Create and Deploy QR Codes Online: A Comprehensive Guide
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist