j2me canvas分行显示字符 (经过改良的)(二)

在原来基础上稍加改动 看上去不那么啰嗦了 代码如下:

public void paint(Graphics g) { Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM); g.setColor(125, 125, 125); g.fillRect(0, getHeight() / 2, getWidth(), getHeight()); g.setFont(font); g.setColor(0, 0, 0); Vector vc = partRows("屏wwwwww幕分行显示ffff解决方法,屏幕分行显eeee示解决方法,屏幕分行显示解决方法在做项目的时候" + "遇到屏幕分行显示文字的问题参考了参考了参考了部分资料之后" + "写了如下解决方案没有考虑英文单词避免换行的问题"); for (int i = 0; i < vc.size(); i++) { g .drawString(vc.elementAt(i).toString(), 0, font.getHeight() * i, 0); } } private Vector partRows(String s) { Vector vc = new Vector(); int width = 0;// 一行中的字符串的总宽度 递增 int position = 0;// 记录一行文字所在字符的索引值 递增 int len = s.length(); for (int i = 0; i < len; i++) { int w = getPixW(s.charAt(i)); width += w; if (width > getWidth()) {//当前i个字符的总宽度超过屏幕尺寸时 把前i-1个字符装入容器 vc.addElement(s.substring(position, i)); position = i; width = getPixW(s.charAt(i)); //一定要把width的值置为当前索引字符的像素宽度 } } vc.addElement(s.substring(position, len)); return vc; } /** * * @param c 待处理字符 * @return 单个字符的像素宽度 */ private int getPixW(char c) { Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM); int w = font.charWidth(c); return w; }

 

主要是对for循环改良一番

你可能感兴趣的:(c,vector,String,System,j2me)