Marko: Länge eines Strings in Pixel bei aktueller Font (AWT) berechnen

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

  1. 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

    1. 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

      1. 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

        1. Hi Marco,

          FontMetrics MyFM=g.getFontMetrics();

          das war mein eigentliches Problem, jetzt funktioniert es.

          Vielen Dank

          Marko

  2. hy,
    könntest du vielleicht den relevanten Teil vom Sourcecode posten?
    das würd glaub' ich was bringen

  3. 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.