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.