Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


12.5.2

Fontmetriken


Mit jedem Font-Exemplar wird ein FontMetrics-Objekt assoziiert. Über das FontMetrics-Exemplar hat man die Möglichkeit, auf die Ausmaße eines Fonts zuzugreifen. Das wird häufig bei der grafischen Ausgabe von Text benötigt, um den Platzbedarf zu berechnen. Für die Standardkomponenten, wie z. B. Button oder TextArea, wird das FontMetrics-Objekt nicht gebraucht. Für die exakte Positionierung von Text, der über den Grafikkontext ausgegeben wird, ist es unerlässlich, die Ausmaße von Text in einem bestimmten Font zu kennen. Ein Beispiel hierfür ist die horizontale und vertikale Zentrierung von Text in einem Canvas oder einem Panel. Wie dies gemacht wird, kann man im Abschnitt nachlesen.

Dem Programmierer stehen drei Möglichkeiten zur Verfügung, um an ein FontMetrics-Exemplar eines bestimmten Fonts zu gelangen: Alle drei oben genannten Objekte definieren die Methode getFontMetrics(Font). Dieser Methode wird ein Font übergeben und liefert das zugehörige FontMetrics-Objekt zurück. Ein Aufruf von
  public void paint(Graphics g) {
    Font f = new Font("SansSerif", Font.PLAIN, 12);
    FontMetrics fm = g.getFontMetrics(f);
  }
liefert somit dasselbe FontMetrics-Objekt wie:
  Font f = new Font("SansSerif", Font.PLAIN, 12);
  FontMetrics fm =
         Toolkit.getDefaultToolkit().getFontMetrics(f);
Das Graphics-Objekt verfügt noch über eine parameterlose Variante von getFontMetrics(), die ein FontMetrics-Objekt des aktuell eingestellten Fonts zurückliefert.

Für die getFontMetrics(Font)-Methode der Klasse Component gilt dasselbe, wie für die Methode createImage(int, int) zum Anlegen von Offscreen-Images: Sie funktioniert nur, wenn die Komponente, von der sie aufgerufen wird, bereits ein gültiges Peer-Objekt besitzt. Andernfalls wird null als Ergebnis zurückgegeben. Das ist der Fall, wenn die Komponente der Oberfläche zugefügt oder angezeigt (bei Frame, Dialog und Window) wurde.

Alternativ dazu besteht die Möglichkeit, die Methode addNotify() der Komponente vor der Verwendung von getFontMetrics() aufzurufen. Dadurch wird ein Peer-Objekt erstellt, und ein darauffolgender Aufruf von getFontMetrics(Font) liefert das gewünschte Objekt.

Diese Technik sollte aber nur in Ausnahmefällen zu Rate gezogen werden. Die Methode addNotify() wird üblicherweise von Container aufgerufen, wenn eine Komponente hinzugefügt wurde. Sie sollte laut Originaldokumentation nicht direkt vom Programmierer verwendet werden.

Nachdem man einmal auf eine der drei oben vorgestellten Arten ein Exemplar von FontMetrics abgerufen hat, kann man die verschiedensten Größenmaße über den zugehörigen Font abfragen.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.