FileDocCategorySizeDatePackage
FontDemo.javaAPI DocExample1877Tue Dec 25 16:00:08 GMT 2001None

FontDemo

public class FontDemo extends JComponent
Finds and displays available fonts

TODO: should be a JTable with the text name in one column and the demo in a JLabel in the other.

author
Ian Darwin (original)

Fields Summary
protected String[]
fontNames
The list of Fonts
protected Font[]
fonts
The fonts themselves
static final int
YINCR
How much space between each name
Constructors Summary
public FontDemo()
Construct a FontDemo -- Sets title and gets array of fonts on the system


	               	 
	  

		Toolkit toolkit = Toolkit.getDefaultToolkit();
		// For JDK 1.1: returns about 10 names (Serif, SansSerif, etc.)
		// fontNames = toolkit.getFontList();
		// For JDK 1.2: a much longer list; most of the names that come
		// with your OS (e.g., Arial, Lucida, Lucida Bright, Lucida Sans...)
		fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().
			getAvailableFontFamilyNames();
		fonts = new Font[fontNames.length];
	
Methods Summary
public java.awt.DimensiongetPreferredSize()

		return new Dimension(500, fontNames.length * YINCR);
	
public static voidmain(java.lang.String[] args)
Simple main program to start it running

		JFrame f = new JFrame("Font Demo");
		f.getContentPane().add(new JScrollPane(new FontDemo()));
		f.setSize(600, 700);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
public voidpaint(java.awt.Graphics g)
Draws the font names in its font. Called by AWT when painting is needed Does lazy evaluation of Font creation, caching the results (without this, scrolling performance suffers even on a P3-750).

		for (int i=0; i<fontNames.length; i+=1) {
			if (fonts[i] == null) {
				fonts[i] = new Font(fontNames[i], Font.BOLD, 14);
			}
			g.setFont(fonts[i]);
			int x = 20;
			int y = 20 + (YINCR * i);
			g.drawString(fontNames[i], x, y);
		}