Textlänge in Pixel?

redneb

Mitglied
Hallo,

gibt es eine Methode in Java die mir die Länge eines formatierten Text in Pixel zurück geben kann?

Ich möchte einen String in ein JTextPane laden, die Größe des JTextPane soll sich den Ausmaßen des Strings anpassen.

Unter C++ kenn ich die Funktion GetTextExtentPoint32

Und eignet sich JTextPane um einen einzeiligen Text anzuzeigen?


Dankeschön
 
Hi,

warum ein JTextPane. Du willst doch nur einen einzeiligen Text anzeigen und nicht schreiben oder? Wenn das so ist, würde ich ein JLabel empfelen. Zu deinem eigentlichen Problem hab ich eine nicht wirklich gute Lösung:
Lese den Text aus, frage ab wie viele Zeichen dieser enthält und setze zum Beispiel die Breite des Labels 5 * Anzahl der Buchstaben.
Dies kannst du natürlich auch von der Größe der Schrift abhängig machen.

Ich hoffe ich konnte helfen.
 
Hi, danke für die schnelle Antwort.

JTextPane wollte ich nur benutzen weil ich diese mal vor 2 Jahren benutzt habe und seit dem nichts mehr mit Java gemacht habe. Dann schaue ich mir das JLabel mal an.

Das Problem mit der Länge des Textes ist, das z.B. ein i nicht soviel Platz verbraucht wie ein w. Wenn der Text dann viele der Plazusparenden Zeichen enthält habe ich ein zulanges JLabel oder JTextPane.

Ich möchte einen Tickertext anzeigen der durchläuft. Dann brauche ich ja die Länge damit ich weis wie weit das Objekt laufen muss und wann ich es wieder an die Startposition bringen muss.
 
Moin!
Kommt darauf an, was genau du machen willst. Wenn der Text einfach durch eine bestimmte Font formatiert ist, könntest du ein JTextField oder auch ein JLabel nehmen...
Die Länge der Schrift bekommst du folgendermaßen: (am Beispiel JTextField)
Code:
yourTextField.setFont(yourFont);
FontMetrics fm = yourTextField.getGraphics().getFontMetrics();
FontMetrics liefert dir dann alle möglichen Grössenangeben zu einem String.

Wenn der Text unterschiedlich formatiert ist, wirdst du ein TextPane nehmen müssen, oder auch ein JLabel (dann über html formatieren);
Da wirdst dann aber schwieriger die Größe des Textes zu berechnen..

*grüssle*
MeinerEiner
 
Danke, mit

Code:
yourTextField.setFont(yourFont);
FontMetrics fm = yourTextField.getGraphics().getFontMetrics();
int i = fm.getStringBounds(text, yourTextField.getGraphics()).getBounds().width;

klappt es wunderbar. Man muss das Objekt nur vorher anzeigen, ansonsten bekommt man eine NullPointerException.
 

Neue Beiträge

Zurück