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);
我写两种情况的自动换行显示文本。
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);
相关文章推荐
- 设置div中文字超出时自动换行和css实现文本超出N行之后显示省略号等
- div+pre标签的组合实现文本原格式显示与自动换行
- div+pre标签的组合实现文本原格式显示与自动换行
- 如何实现:GridView 控件中显示的文本不自动换行,隐藏超出宽度部分wj-wangjun
- j2me在Canvas上绘制大量文本自动换行的实现
- div+css实现文本原格式显示与自动换行
- CSS实现div添加过长的英文字母或数字的内容显示一排而溢出时,进行自动换行
- gridview大文本自动换行显示
- UltraEdit的Tab键移动位数设置 && UE编辑十六进制(映像修改) && UE加进右键菜单 && UE切换自动换行 && UE高亮显示其他编程语言文本
- Android中用StaticLayout实现文本绘制自动换行详解
- J2ME实现展示内容自动根据屏幕宽度换行的功能
- 2018.01.30.v-for的使用、css实现自动换行,时间戳的简单使用。
- 在IFrame中实现文本的自动换行
- 实现单行、多行文本自动隐藏及显示省略号
- android开发进行自动更新时怎么下载软件到手机内存,显示实现下载到SD卡了
- OAF 中对文字实现html效果及对超级长文本实现默认换行,对只读的messageTextInput中的内容自动换行
- HTML优化数据显示页面样式;文本自动换行
- CSS实现单行、多行文本溢出显示省略号。 超出隐藏,不换行 ....
- css--文本换行最简单的实现方式
- CDC:DrawText多行显示文本的问题(文本自动换行)