Wie kann man die genauen Abmessungen eines Schriftzuges ermitteln?
Nach dem Erzeugen eines String
-Objektes wird im
Beispiel zunächst ein Objekt vom Typ Font
erstellt, das die Schriftfamilie, deren -Stil und -Größe
definiert. Dann wird ein FontRenderContext
erzeugt, der
hier neu gebildet wird, aber bei grafischen Anwendungen
üblicherweise mittels Graphics2d#getFontRenderContext()
aus dem Grafikkontext der darstellenden Komponente ermittelt wird.
Mit
Hilfe des FontRenderContext
, des Font
-Objektes
und des auszumessenden Strings wird ein TextLayout
-Objekt
erzeugt, dessen Methode getBounds()
ein Rechteck
liefert, das exakt den äußeren Abmessungen des
Schriftzuges entspricht.
import java.awt.Font;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.Rectangle2D;
public class SchriftMass {
public static void main(String[] args) {
String s = "Dies ist ein vollständiger Satz.";
Font font = new Font("Verdana", Font.BOLD, 16);
FontRenderContext con = new FontRenderContext(font.getTransform(), false, false);
TextLayout layout = new TextLayout(s, font, con);
Rectangle2D rect = layout.getBounds();
System.out.println("x: " + rect.getX());
System.out.println("y: " + rect.getY());
System.out.println("Breite: " + rect.getWidth());
System.out.println("H\u00F6he: " + rect.getHeight());
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.