String automatisch in nächste Zeile umbrechen (Graphics)

Methusalem

Mitglied
Hallo,
Gibt es eigentlich eine Fertiglösung in Java, die den auf den Graphics eingefügten String am Ende des Clips umbrechen lässt? Oder muss ich hier selbst eine umständliche Eigenlösung erfinden, jedes Zeichen auf den Pixel genau ausmessen, und in einer Schleife selbst manuell umbrechen?
 
Eine fertige Lösung ist mir nicht bekannt aber so umständlich ist es ja nicht.
Du weißt ja wie breit der Text maximal sein darf und dann musst du schauen wie viel du vom String abschneiden musst (Stichwort: FontMetrics#stringWidth(String)), dort splittest du und zeichnest beide Teile mit einem geeigneten Offset in Y-Richtung (bspw. mit g.getFontMetrics().getHeight();)
 
Du könntest ja solange den Index erhöhen (also eine Position im String weiter gehen) wie die oben genannte Methode stringWidth(String) kleiner oder gleich deiner max. Breite ist. Dann weißt du an welchem Index du den String splitten musst
 
Hole dir aus dem Graphics2D den FontRenderContext, packe deinen String in einen AttributedString, hole dir aus dem AttributedString den AttributedCharacterIterator, konstruiere aus dem FontRenderContext und dem AttributedCharacterIterator einen LineBreakMeasurer, hole dir daraus die TextLayouts, und zeichne die auf den Graphics2D.
 
@Robat Ja, ich bin im Moment noch am Experimentieren mit getFontMetrics().stringWidth(""), ich glaube, damit lässt sich was machen! Danke schon mal hierfür 🙂
@Harry Kane Danke, ich werde auch deinen Weg mir anschauen und in Betracht ziehen.
 

Neue Themen


Zurück
Oben