Dans cette fiche...

<Retour>

Description de l'applet

Difficulté : Résultat
Pour obtenir des informations sur une police de caractères, vous devez utiliser l'objet FontMetrics et ses méthodes.

Voici le détail des méthodes stringWidth() et charWidth(), qui donnent la largeur occupée à l'écran par un ou plusieurs caractères.

 

Votre navigateur n'est pas compatible Java !

Listing de l'applet

// --------------------------------------------------
// FONTINFO : INFORMATION SUR LES POLICES DE CARACT.
// --------------------------------------------------
import java.applet.*;
import java.awt.*;
public class FontInfo extends Applet
{
	String s;
	Font fnt1, fnt2, fnt3;
	FontMetrics fm1, fm2, fm3;
	public void init()
	{
		// Définir la couleur de fond de l'applet
		setBackground(Color.black);	
		// Initialiser la chaîne
		s = "Java";	
		// Créer 3 polices de caractères
		fnt1 = new Font("Courier", Font.BOLD, 24);
		fnt2 = new Font("Dialog", Font.PLAIN, 12);
		fnt3 = new Font("Dialog", Font.BOLD, 12);	
		// Créer 3 objets FontMetrics dérivés des 3 polices ci-dessus
		fm1 = getFontMetrics(fnt1);
		fm2 = getFontMetrics(fnt2);		
		fm3 = getFontMetrics(fnt3);
	}
	// Affichage
	public void paint(Graphics g)
	{
		// Ecrire en blanc
		g.setColor(Color.white);	
		// Ecrire le mot Java, dans la police numéro 1
		g.setFont(fnt1);
		g.drawString(s, 10, 30);
		// La même chose, en police numéro 2
		g.setFont(fnt2);
		g.drawString(s, 10, 60);
		// Idem, en police numéro 3
		g.setFont(fnt3);
		g.drawString(s, 10, 90);
		// Afficher les largeurs des 3 chaînes
		g.setColor(Color.orange);
		g.setFont(fnt2);
		g.drawString("Taille en police #1 : "+fm1.stringWidth(s), 100, 30);
		g.drawString("Taille en police #2 : "+fm2.stringWidth(s), 100, 60);
		g.drawString("Taille en police #3 : "+fm3.stringWidth(s), 100, 90);
	}
}

Télécharger le listing

Le listing en détail...

Seules les nouveautés par rapport aux listings précédents sont commentées ici.

Font fnt1, fnt2, fnt3;
Déclaration de 3 objets Font (on va écrire dans 3 polices de caractères différentes).
 
FontMetrics fm1, fm2, fm3;
Déclaration de 3 objets FontMetrics (chacun donnera des informations sur une des fontes utilisées).
 
fnt1 = new Font("Courier", Font.BOLD, 24);
fnt2 = new Font("Dialog", Font.PLAIN, 12);
fnt3 = new Font("Dialog", Font.BOLD, 12);	
Définition des 3 polices de caractères.
 
fm1 = getFontMetrics(fnt1);
fm2 = getFontMetrics(fnt2);		
fm3 = getFontMetrics(fnt3);
Définition de chaque objet FontMetrics rattaché à une police de caractères, grâce à la méthode getFontMetrics().
 
fm1.stringWidth(s)
Donne la taille d'une chaîne de caractères, dans la police fnt1 (de laquelle l'objet FontMetrics fm1 dépend).
Cette taille est donnée en pixels, en fonction du style de caractères : il s'agit donc de la largeur occupée par la chaîne à l'affichage. A ne pas confondre avec s.length() qui donnerait le nombre de caractères de la chaîne s (soit 4 dans l'exemple).

A noter que les polices fnt2 et fnt3 sont presque identiques : Dialog, taille 12. La seule différence est que l'une est en gras, donc plus large. La méthode stringWidth() le confirme.

Une méthode proche, charWidth(), donne la largeur occupée à l'écran par un caractère unique.

Intégration de l'applet dans la page

Voici le code qui a été utilisé dans cette page HTML pour faire apparaître l'applet :

<applet code="FontInfo.class" width=250 height=100>
Votre navigateur n'est pas compatible Java !
</applet>

Pour plus de précisions sur l'intégration d'une applet, cliquez ici.