<HTML>
<HEAD>

<!-- Change the Title please -->
<TITLE>AWT SHORT COURSE: Fonts</TITLE>
</HEAD>

<!-- BODY-TEMPLATE -->

<!-- NAVBAR-PULLQUOTE-TEMPLATE -->
<TR VALIGN=TOP>
<td width=178>

<BR clear=LEFT>
<TABLE ALIGN=LEFT>
<TR VALIGN=TOP>
<td width=60>
<a href="../TOC.html"><img border=0 src="/developer/images/magelang/contents.gif" alt="contents" WIDTH=147 HEIGHT=23></a>
</td>
</tr>
<tr>
<td>
<a href="Colors.html"><img border=0 src="/developer/images/magelang/previous.gif" hspace=10 alt="Previous" width=64 height=20></a>
</td>
<td>
<a href="Fonts.html"><img border=0 src="/developer/images/magelang/next.gif" alt="Next" width=43 height=20></a>
</td>
</tr>
</table>

</TR>
</TABLE>

<!-- PAGETOP-TEMPLATE -->
<TR>
<TD WIDTH=452 ALIGN=RIGHT>
<img src=images/ShortCourse.gif>
</TD>
</TR>
<TR>
<TD WIDTH=452 COLSPAN=2 ALIGN=right>
<!--breadcrumb trail; change to reflect the current URL-->
<!-- Please change to reflect where _exactly_ you are in the site
<!-- Add more subcategories as needed  -->

<!-- Please Change these.  The Links are SubCat#, and titled SubCategory# -->
</TD>
</TR>

<!--- Please put everything you want here to the right of the navbar.
	<TR>
	<TD>
	This is the MAIN TABLE.  Put data HERE unless you need a table that
 	REQUIRES the full screen width, i.e. an event schedule table.
	Add a new table row for the data.

	If the text needs to be in two columns, use this <TR> structure:
	Make the width=452
	<TR>
	<TD WIDTH=226>
	</TD>
	<TD WIDTH=226>
	</TD>
	</TR>

	</TD>
	</TR>
--->

<TR>
<TD width=452>
<p>
<a name="Fonts">
<font size=+2>Fonts</font><P>
</a>

The Font for a Component can be set.  If the Component is a Container, then all components added to that Container will assume the Container's Font.  <a href="http://java.sun.com/products/JDK/CurrentRelease/api/java.awt.Font.html">Font</a> is a class that simply stores information about a class such as its font name, weight, and point size.

<p>
To get the list of available fonts, ask for the current Toolkit (the class that maps AWT to the underlying native windowing toolkit) and then ask the toolkit for the font list:

<p>
<tt><pre>
String[] fontList = Toolkit.getDefaultToolkit().getFontList();
</pre></tt>

<p>
Creating a Font is simple:

<p>
<tt><pre>
Font myFont = new Font("Helvetica", Font.BOLD, 12);
</pre></tt>

<p>
You can either set the Font of a Component or a Graphics context; for example, here is an applet that draws some text in Helvetica:

<p>
<center>
<hr>
<applet code=FontTest.class CODEBASE="/applets/magelang/AWT-Training/Examples/" width=200 height=50></applet>
<hr>
</center>

<p>
Corresponding source code:
<p>
<tt><pre>
import java.awt.*;

public class FontTest extends java.applet.Applet {
    public void paint(Graphics g) {
        Font f = new Font("Helvetica", Font.BOLD, 16);
        g.setFont(f);
        g.drawString("Helvetica 16 point Bold", 10, 30);
    }
}
</pre></tt>

<p>
You can ask a Font for its width and height in pixels via font metrics:

<p>
<tt><pre>
Font f = new Font("Helvetica", Font.BOLD, 16);
FontMetrics fm = getFontMetrics(f);
int h = fm.getHeight();
// how wide is z in this font?
int w = fm.getWidth('z');
</pre></tt>

<p>
Related exercise(s):
<ul>
<LI><A HREF="../Exercise/FontTest/index.html"> FontTest</A>
</ul>
<p>
You have reached the end of the course notes. You can proceed to the <a href="/developer/onlineTraining/AWT/MageRoot.html">Exercises</a>.
</TD>
</TR>
</TABLE>

<!--
        This table is for everything that goes under the 
        navbar, it is a full screen table. Use this table 
        ONLY for full screen width tables like an event 
        hourly schedule.
-->

<br clear=left>
<TABLE ALIGN=left>

<tr>
<td WIDTH=600 align=right>

<!--Last Modified and copyright message

    Please modify the date whenever significant changes are made to 
    a page; leave the copyright alone
-->

</td>
</tr>
</TABLE>

</BODY>
</HTML>
