由于不同机型的字体大小都不尽相同,所以要用到一个方法用来根据显示区域的大小将一个长字符串分割成若干个宽度适合显示的子字符串,之前看过angelleecash兄的一篇《J2ME根据显示宽度分割字符串》,里面提到的方法在使用的时候,有时会出现分割的字符串宽度超过指定宽度的问题,于是修改了这个方法,代码如下:
/** * 根据指定宽度分割字符串,可用“|”“/n”换行 * @author Rekc@h * @param longString 原始字符串 * @param font 指定字体 * @param width 指定宽度 * @return 分割成的字符串数组 */ public String[] loadMultiString(String longString, Font font, int width) { int stringLength = longString.length(); Vector v = new Vector(); int offset = 0, length = 1; while (offset + length < stringLength) { //处理 '|'或者'/n'硬换行符 if(longString.charAt(offset+length-1) == '|' || longString.charAt(offset+length-1) == '/n'){ v.addElement(longString.substring(offset, offset + length - 1)); offset = offset + length; length = 1; //处理 长度>=规定长度 } else if (font.substringWidth(longString, offset, length) >= width) { v.addElement(longString.substring(offset, offset + length - 1)); offset = offset + length - 1; length = 1; //处理 不用换行的 } else { length++; } } //添加剩下的尾巴字串 if (offset < stringLength) { v.addElement(longString.substring(offset)); } //复制到返回字串缓冲rstrs String[] rstrs = new String[v.size()]; v.copyInto(rstrs); return rstrs; }