Metrics.java// Fig. 12.16: Metrics.java
// Displaying font metrics.
import javax.swing.JFrame;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Metrics
{
// execute application
public static void main( String[] args )
{
// create frame for MetricsJPanel
JFrame frame = new JFrame( "Demonstrating FontMetrics" );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
MetricsJPanel metricsJPanel = new MetricsJPanel();
frame.add( metricsJPanel ); // add metricsJPanel to frame
frame.setSize( 510, 240 ); // set frame size
frame.setVisible( true ); // display frame
} // end main
} // end class Metrics
class MetricsJPanel extends JPanel
{
// display font metrics
public void paintComponent( Graphics g )
{
super.paintComponent( g ); // call superclass's paintComponent
g.setFont( new Font( "SansSerif", Font.BOLD, 12 ) );
FontMetrics metrics = g.getFontMetrics();
g.drawString( "Current font: " + g.getFont(), 10, 30 );
g.drawString( "Ascent: " + metrics.getAscent(), 10, 45 );
g.drawString( "Descent: " + metrics.getDescent(), 10, 60 );
g.drawString( "Height: " + metrics.getHeight(), 10, 75 );
g.drawString( "Leading: " + metrics.getLeading(), 10, 90 );
Font font = new Font( "Serif", Font.ITALIC, 14 );
metrics = g.getFontMetrics( font );
g.setFont( font );
g.drawString( "Current font: " + font, 10, 120 );
g.drawString( "Ascent: " + metrics.getAscent(), 10, 135 );
g.drawString( "Descent: " + metrics.getDescent(), 10, 150 );
g.drawString( "Height: " + metrics.getHeight(), 10, 165 );
g.drawString( "Leading: " + metrics.getLeading(), 10, 180 );
} // end method paintComponent
} // end class MetricsJPanel
Maintained by John Loomis, updated Tue May 27 15:43:57 2014