2010-05-16 9 views
26

Wie bekomme ich FontMetrics ohne Verwendung von Graphics? Ich möchte in Fontmetrics Konstruktor bekommen, jetzt ich auf diese Weise:Java - FontMetrics ohne Grafiken

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(); 
+0

Warum möchten Sie dies ohne Grafiken tun? – tangens

+0

Ich erstelle mein eigenes Steuerelement, und ich möchte preffred Größe in Konstruktor festlegen – piotrek

+6

Dies ist nützlich für das Abrufen von Schriftarten im kopflosen Modus, d. H. Ein Befehlszeilentool, das Schriftarten zu Bitmaps verarbeitet. –

Antwort

21

Hmm ... Es ist ganz logisch, dass Sie Grafiken benötigen Fontmetrics zu bekommen. Schrifthöhe, Breite usw. können auf verschiedenen Displays abweichen.

Wenn Sie einige Komponenten haben, können Sie es für immer Fontmetrics verwenden:

component.getFontMetrics(font); 
+0

Thx :) Es funktioniert – piotrek

+0

@amorfis Sind Sie sicher, dass Schriftbreite und -höhe abhängig von der Anzeige sind, während ich die Schriftgröße angegeben habe? –

17

Nein, Sie müssen nicht unbedingt erhalten müssen/verwenden das Grafik-Objekt:

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

Wenn Sie jetzt anrufen c.getGraphics() wird Null zurückgegeben. Dies (Leinwand) funktioniert auch in headless mode.

+2

Dies sollte die akzeptierte Antwort sein. – SimonT