package utils; import java.awt.Graphics; import java.awt.FontMetrics; import java.util.ArrayList; public class WrappedString { private ArrayList lstStrings; private FontMetrics metrics; public WrappedString(String str, final FontMetrics metrics, final int width) { this.lstStrings = new ArrayList(); this.metrics = metrics; while (!str.equals("")) { int cur = 1; int lastSpace = -1; while (cur <= str.length() && metrics.stringWidth(str.substring(0, cur)) < width) { if (str.substring(cur - 1, cur).equals(" ")) { lastSpace = cur - 1; } ++cur; } if (lastSpace == -1 || cur > str.length()) { this.lstStrings.add(str.substring(0, cur - 1)); str = str.substring(cur - 1); } else { this.lstStrings.add(str.substring(0, lastSpace)); str = str.substring(lastSpace + 1); } while (str.length() > 0 && str.substring(0, 1).equals(" ")) { str = str.substring(1); } } } public int getLineCount() { return this.lstStrings.size(); } public String getLine(final int index) { return this.lstStrings.get(index); } public FontMetrics getMetrics() { return this.metrics; } public void draw(final Graphics g, final int x, final int y) { for (int i = 0; i < this.getLineCount(); ++i) { g.drawString(this.getLine(i), x, y + i * this.metrics.getHeight()); } } }