Announcement

Collapse
No announcement yet.

Schriftgrösse anhand der Höhe eines TextFeldes berechnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schriftgrösse anhand der Höhe eines TextFeldes berechnen

    Hallo zusammen,

    hab leider bisher nichts brauchbares gefunden und kenne mich mit den Fontmetrics nich so gut aus.

    Wie berechne ich die Schriftgrösse, die ich einem Texfeld zuweisen möchte, wenn ich nur die Höhe des Textfeldes habe und die Schrift das Textfeld gut ausfüllen soll?

    Bin für jeden Hinweis dankbar

    Bye

    Matt

  • #2
    Die Frage ist mir unklar:

    Wozu eine Berechnung, wenn man dem Textfield einen Font zuweist, dann passt es sich selbst der gewählten Größe des Fonts an?

    Ansonsten erstellt du eine Instanz von FontMetrics

    http://java.sun.com/j2se/1.4.2/docs/...ntMetrics.html

    mit deinem gewählten Font und kannst dann die Höhe mit getHeight() abfragen.

    Edit:
    Und die Größe des Textfelfes richtet sich in erster Linie nach dem gewählten Layout

    Wenn du erreichen willst, dass der Text die Box ausfüllst:

    Größe des Textfeldes holen
    Fonthöhe duch Höhe des Textfeldes ermitteln - Kleiner als Textfeld
    Font am Textfeld neu setzen
    Textbreite kann dann nur dieser Fontgröße entsprechen
    Ansonsten musst du das komplett grafisch darstellen durch skalieren des Textes
    Zuletzt editiert von Christian Marquardt; 19.02.2009, 14:07.
    Christian

    Comment


    • #3
      Ok danke erst einmal.

      Hab mich wahrscheinlich etwas unverständlich ausgedrückt. ich habe in einem BorderLayout-Panel ein Textfeld im center. Wenn ich die Grösse des Panels ändert, ändert sich auch die Grösse des Textfeldes aber die Schriftgrösse des Textfeldes bleibt gleich.

      Nun will ich aber dem Textfeld die Schriftgrösse dynamisch zuweisen und zwar so, dass das Textfeld gut gefüllt ist. Um das zu tun muss ich irgendwie die Schriftgrösse in Abhängigkeit von der Höhe des Textfeldes ermitteln.

      Vielleicht gehts ja auch vie einfacher?

      Comment


      • #4
        Vielleicht gehts ja auch vie einfacher?
        Nun, wie ich versucht habe zu erläutern, wird es das wohl nicht einfacher werden, da das Verhältnis von Höhe und Breite des Textes zur Höhe/Breite des Textfeldes wohl bei einer Änderung des Layouts in den seltensten Fällen übereinstimmen wird. Insofern kannst du den Text nur "verzerrt darstellen", wenn er das Textfield ausfüllen soll. Oder den oben beschriebenen Weg zur "Annäherung" an die Höhe nutzen...ev dabei das Textfeld kleiner machen. Das Andere (genaue Größe) kannst du nur grafisch lösen, da die Standardmethoden eine solche Anforderung nicht berücksichtigen.

        Warum nimmst du nicht ein anderes Layout, wenn du keine Anpassung der Elemente willst
        Zuletzt editiert von Christian Marquardt; 19.02.2009, 14:33. Reason: Rechtschreibung
        Christian

        Comment


        • #5
          Allerdings wird nicht das Ergebnis deiner Anpassung "grauselig" aussehen?

          Jedes Textfeld mit anderer Schriftgröße?

          Accessibility ?
          Christian

          Comment


          • #6
            In diesem Fall soll es aber so sein, die Schrift wird natürlich nicht verzerrt, denn es ist sichergestellt, dass das Textfeld eine bestimmte Grösse nicht überschreitet und das Seitenverhältnis gleich bleibt.

            Da es eine Anzeige darstellt ist es natürlich je besser je grösser der Text im Textfeld ist und den maximalen Platz auch ausnutzt. Wenn der benutzer das Panel vergrössert soll auch die Anzeige grösser werden...

            Ich will eigentlich nur wissen, wie man die Schriftgrösse anhand der Höhe des Textfeldes errechnen kann (so das die Höhe von Schriftgrösse x etwas weniger als der Höhe des Textfeldes entspricht), alles andere muss euch nicht kümmern.

            Comment


            • #7
              das Verhältnis von Höhe und Breite des Textes zur Höhe/Breite des Textfeldes
              Das ist die Berechnung

              Größe des Textfeldes holen
              Fonthöhe duch Höhe des Textfeldes ermitteln - Kleiner als Textfeld
              Font am Textfeld neu setzen
              Christian

              Comment


              • #8
                Also ich habe das mal ausprobiert, funktioniert, sieht aber hmm "komisch" aus
                Christian

                Comment

                Working...
                X