| 
 /*
 * Output:
 *
 */
 
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.FontMetrics;
 import java.awt.Graphics;
 
 import javax.swing.JFrame;
 import javax.swing.JPanel;
 
 public class MainClass extends JPanel {
 
 public void paint(Graphics g) {
 int fontSize = 20;
 
 g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
 
 
 FontMetrics fm = g.getFontMetrics();
 
 String s = "www.java2s.com";
 
 int stringWidth = fm.stringWidth(s);
 
 int w = 200;
 int h = 200;
 
 int x = (w - stringWidth) / 2;
 int baseline = fm.getMaxAscent() +
 (h - (fm.getAscent() + fm.getMaxDecent()))/2;
 int ascent  = fm.getMaxAscent();
 int descent = fm.getMaxDecent();
 int fontHeight = fm.getMaxAscent() + fm.getMaxDecent();
 
 g.setColor(Color.white);
 g.fillRect(x, baseline-ascent , stringWidth, fontHeight);
 
 g.setColor(Color.gray);
 g.drawLine(x, baseline, x+stringWidth, baseline);
 
 g.setColor(Color.red);
 g.drawLine(x, baseline+descent, x+stringWidth, baseline+descent);
 
 g.setColor(Color.blue);
 g.drawLine(x, baseline-ascent,
 x+stringWidth, baseline-ascent);
 g.setColor(Color.black);
 g.drawString(s, x, baseline);
 }
 
 public static void main(String[] args) {
 JFrame frame = new JFrame();
 frame.getContentPane().add(new MainClass());
 
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setSize(200,200);
 frame.setVisible(true);
 }
 }
 
 
 
 |