37 Stimmen

Java - FontMetrics ohne Grafiken

Wie erhält man FontMetrics ohne Verwendung von Grafiken? Ich möchte FontMetrics im Konstruktor erhalten, jetzt tue ich diesen Weg:

BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB);
FontMetrics fm = bi.getGraphics().getFontMetrics(font);
int width = fm.stringWidth(pattern);
int height = fm.getHeight();

42voto

Lonzak Punkte 8572

Nein, Sie müssen nicht unbedingt das Grafikobjekt erhalten/verwenden:

Font font = new Font("Helvetica",Font.PLAIN,12);
Canvas c = new Canvas();
FontMetrics fm = c.getFontMetrics(font);

Wenn Sie jetzt anrufen würden c.getGraphics() würde er null zurückgeben. Die Canvas-Lösung hingegen funktioniert auch in Headless-Modus .

22voto

amorfis Punkte 14730

Hmm... Es ist ziemlich logisch, dass Sie Grafiken benötigen, um FontMetrics zu erhalten. Schrifthöhe, -breite usw. können auf verschiedenen Displays unterschiedlich sein.

Wenn Sie eine Komponente haben, können Sie diese für FontMetrics verwenden:

component.getFontMetrics(font);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X