Dans cette fiche... |
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.
|
|
// -------------------------------------------------- // 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); } }
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. |
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.