Länge eines Strings in Pixel bei aktueller Font (AWT) berechnen
Marko
- java
0 Marco Blaschke0 Marko0 Marco Blaschke0 Marko
0 Jan Rochel0 Felix Kaiser
Hallo Forum,
wie bekomme ich am einfachsten raus, wie lange ein String in Pixel ist, bevor ich ihn auf dem Bildschirm ausgegebe (auf ein Canvas Objekt, mit drawString() ). Ich brauche das, um den String mittig zu einem bestimmten Punkt auszugegeben.
Gruss
Marko
Hi Marko
wie bekomme ich am einfachsten raus, wie lange ein String in Pixel ist
Einfach ein FontMetrics-Objekt mit dem gewählten Font erzeigen, und dann mit FontMetrics.stringWidth die Breite ermitteln:
FontMetrics myFM = new FontMetrics(MyFont);
int TextBreite=myFM.stringWidth("Na, wie breit bin ich??");
Bis denne,
Marco
Hallo Marco,
gibt das Problem, dass der Compiler meckert, weil FontMetrics eine abstrakte Klasse sei. Heisst das, ich muss erst eine Subklasse erstellen ? Und wenn ja, muss ich noch irgendeine Methode ausprogrammieren ?
Gruss
Marko
Hi Marko.
gibt das Problem, dass der Compiler meckert, weil FontMetrics
eine abstrakte Klasse sei.
Man merkt, dass ich lange nicht mehr mit Java gearbeitet habe. Der Compiler hat recht, Ein FontMetrics-Objekt kann nicht direkt erzeugt werden. Sorry.
Wenn Du Dich innnerhalb einer paint-Methode [z.B. Applet.paint(Graphics g)] befindest, kannst Du die FontMetrics direkt abgreifen:
Applet-Code:
public void paint(Graphics g)
{
FontMetrics MyFM=g.getFontMetrics();
int myWidth=MyFM.stringWidth("TestTest");
//etc.....
}
Bis denne,
Marco
Hi Marco,
FontMetrics MyFM=g.getFontMetrics();
das war mein eigentliches Problem, jetzt funktioniert es.
Vielen Dank
Marko
hy,
könntest du vielleicht den relevanten Teil vom Sourcecode posten?
das würd glaub' ich was bringen
Vergiss es! Du kannst zwar rechnen, musst aber absolute Angaben via CSS mit px machen. Ist aber blöd, einige Nutzer benutzen höhere Schriftgrade wie z.B. 120dpi. Da fällt das ganze flach. Man kann leider nicht diesen Grad auslesen. Oder man macht alles absolut, was bei 120dpi Schriftgrad dann zu klein wird.