您的位置:首页 > 其它

J2ME简单灵活实现手机中自动换行显示文本

2005-11-07 16:40 761 查看
在网看到过一些自动换行显示文本的例子,但是总觉得写的太长,而且不灵活。

我写两种情况的自动换行显示文本。

1.在一屏上显示,不需要滚动的情况

2.一屏显示不了,需要进行滚动,也就是可以通过按键来滚动。

(一)在一屏上显示,不需要滚动的情况:

public void drawLines(Graphics g,String str,int fontSize,int x,int y,int width,int height){

Font ft=Font.getFont(0,0,fontSize);

g.setFont(ft);

int lines=0;

int start=0;

for(int i=1;i if(ft.substringWidth(str,start,i-start)>width){

g.drawString(str.substring(start, i - 1),x,y+lines*height,20);

start=i-1;

lines++;

}

}

g.drawString(str.substring(start, str.length()),x,y+lines*height,20);

}

参数及用法说明:

str 为要显示的字符串;

fontSize为设置字体大小

x 为设置第一个字符的x坐标

y 为设置第一个字符的y坐标

width 为每行的显示宽度(象素),(可以设置为屏幕的宽度)

height 为每行的显示高度(象素)

使用事例:

drawLines(g,str,8,20,60,50,16);

(二)需要滚动的情况

这里分两步来实现:

1)将一个长字符串拆分为一个字符串数组,

2)画字符串数组

拆分字符串

public int divideStr(String str,int fontSize,int width,String[] strs){

Font ft=Font.getFont(0,0,fontSize);

int lines=0;

int start=0;

for(int i=1;i if(ft.substringWidth(str,start,i-start)>width){

strs[lines]=str.substring(start, i - 1);

start=i-1;

lines++;

if(lines==strs.length)

return lines;

}

}

strs[lines]=str.substring(start, str.length());

return ++lines;

}

画字符串数组

public void drawDivideStr(Graphics g,String[] strs,int fontSize,int x,int y,int height,int start,int len){

Font ft=Font.getFont(0,0,fontSize);

g.setFont(ft);

for(int i=0;i int index=(i+start)%len;

g.drawString(strs[index],x,y+i*height,20);

}

}

参数及使用说明

注意:String[] strs为 保存拆分后字符串数组

拆分的返回值为拆分字符串的个数

start 为开始画字符串的下标,可以通过按键改变这个值,来实现滚动

使用例子:

int len=divideStr(parent.str,8,60,parent.strs);

drawDivideStr(g,parent.strs,8,20,60,16,0,len);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  j2me 手机 string
相关文章推荐