import java.awt.Canvas;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import javax.swing.JFrame;
public class Draw2DTextLayout extends JFrame {
public static void main(String args[]) {
Draw2DTextLayout app = new Draw2DTextLayout();
}
public Draw2DTextLayout() {
add("Center", new MyCanvas());
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
class MyCanvas extends Canvas {
public void paint(Graphics graphics) {
Graphics2D g = (Graphics2D) graphics;
FontRenderContext frc = g.getFontRenderContext();
TextLayout[] s = new TextLayout[3];
Font f1 = new Font("Helvetica", Font.BOLD, 24);
Font f2 = new Font("TimesRoman", Font.ITALIC, 14);
Font f3 = new Font("Helvetica", Font.PLAIN, 12);
s[0] = new TextLayout("This is the first sentence.", f1, frc);
s[1] = new TextLayout("This is the second sentence.", f2, frc);
s[2] = new TextLayout("This is the third sentence.", f3, frc);
int yOffset = 0;
for (int i = 0; i < s.length; ++i) {
s[i].draw(g, 100, 100 + yOffset);
yOffset += s[i].getAscent() + s[i].getDescent() + s[i].getLeading();
}
}
}
}