Get rectangle for each character in a string for certain font in Java

Description

The following code shows how to get rectangle for each character in a string for certain font.

Example


import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
//from ww  w.  jav  a 2 s .  com
import javax.swing.JComponent;
import javax.swing.JFrame;

class MyCanvas extends JComponent {
  public void paint(Graphics g) {
    g.setFont(new Font("SansSerif",Font.BOLD,100));
    FontMetrics fm = getFontMetrics(new Font("SansSerif",Font.BOLD,100));
    String s = "java2s";
    int x = 5;
    int y = 5;
    
    for (int i = 0; i < s.length(); i++) {
      char c = s.charAt(i);

      int h = fm.getHeight();
      int w = fm.charWidth(c);

      g.drawRect(x, y, w, h);
      g.drawString(String.valueOf(c), x, y + h);

      x = x + w;
    }
  }
}

public class Main {
  public static void main(String[] a) {
    JFrame window = new JFrame();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setBounds(30, 30, 450, 450);
    window.getContentPane().add(new MyCanvas());
    window.setVisible(true);
  }
}

The code above generates the following result.

Get rectangle for each character in a string for certain font in Java




















Home »
  Java Tutorial »
    Graphics »




Animation
BufferedImage
Color
Font
Gradient
Graphics Settings
Image
Mouse Draw
Print
Shape
Text
Transform