String mit Zeilenumbruch / HTML vermessen

Hallo,

ich möchte einen Text, der in einen JLabel dargestellt werden soll (oder etwas anderem, wenn es günstigere Lösungen gibt), vermessen. Das mache ich bis jetzt so:

//Font f;
Rectangle2D r = f.getStringBounds(text, new FontRenderContext(new AffineTransform(), false, false));

Funktioniert auch ganz ok. Allerdings bekomme ich es so nicht hin, einen Zeilenumbruch in den String zu integrieren. Bei der Lösung mit HTML funktioniert das Vermessen überhaupt nicht, da der Roh-String vermessen wird.
Hat jemand dazu eine Idee?

Nico

Was meinst du mit vermessen ? Pixel oder Anzahl der Zeichen?

Ich meine, wie hoch und breit der Text ist.

DAs musst du mit FontMetrics machen.

Kapittel 17.3.6 Font-Metadaten durch FontMetrics:

http://openbook.galileocomputing.de/javainsel9/

Danke für die Antwort,
wie mir scheint, machen die FontMetrics so ziemlich das gleiche wie direkt über den Font.
Wie würdest du denn hier Zeilenumbrüche darstellen? HTML wird ja sicher nicht interpretiert…

Nico

mit \n wie in UNICODE üblich… sowie \t für einen tab.

Hm… so hatte ich das auch schon versucht. Aber weder werden im JLabel die Zeilenumbrüche angezeigt, noch werden diese beim Messen berücksichtigt. Es ist alles so, als wären sie gar nicht da. bei \r\n das gleiche…

dann versuch es mit \u0085

da kommen zwei Punkte.

Dann hab ich den Falschen Unicodewert benutzt. Google mal nach unicode in java.

LG

Dann hab ich den Falschen Unicodewert benutzt. Google mal nach
unicode in java.

Oder JLabel unterstützt Zeilenumbrüche nur in Verbindung mit HTML:
By default, a component’s text is displayed in a single font and color, all on one line.
(http://download.oracle.com/javase/tutorial/uiswing/c…)

Ich fürchte das Ursprungsproblem lässt sich nur lösen, indem man die einzelnen Zeilen ohne HTML Code vermisst (unter verwendung der entsprechenden Schrift).

Gruß
Heavy