在网上看见不少关于这个内容的,这是我改进后的方法。
/**
* 绘制文本(自动换行),文本中可以有回车符 /n 强制换行
* @param g
* @param str 文本内容
* @param ft 文本字体
* @param x 文本起始位置X坐标
* @param y 文本起始位置Y坐标
* @param width 显示区域宽度
*/
public static void drawText(Graphics g, String str, Font ft, int x, int y, int width) {
g.setFont(ft);
int height = ft.getHeight();
int lines = 0;
int start = 0;
String sub;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i) == '/n') {
sub = str.substring(start, i);
g.drawString(sub, x, y + lines * height, 0);
start = i + 1; //跳过回车符
i++;
lines++;
}
else if (ft.substringWidth(str, start, i - start) > width) {
sub = str.substring(start, i);
g.drawString(sub, x, y + lines * height, Const.LT);
start = i;
lines++;
}
}
g.drawString(str.substring(start, str.length()), x, y + lines * height, 0);
}