社区
J2ME
帖子详情
关于读外部text文件,并自动换行显示。
efeng0973
2004-08-11 03:46:30
我在做一个养成类游戏,因为文字信息量比较大,所以用一个text文件记录文字,然后加到包里,请问怎样把中文字符读进来,放在一个数组里,然后显示在屏幕上,并自动换行。根据屏幕宽度来决定显示几个字符。
...全文
388
7
打赏
收藏
关于读外部text文件,并自动换行显示。
我在做一个养成类游戏,因为文字信息量比较大,所以用一个text文件记录文字,然后加到包里,请问怎样把中文字符读进来,放在一个数组里,然后显示在屏幕上,并自动换行。根据屏幕宽度来决定显示几个字符。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flyingghost
2004-08-16
打赏
举报
回复
楼上,是你的编码方式不对。电脑模拟器上一般默认是GBK,但手机上不是。甚至不一定支持GBK。最好用UTF-8。
goodnow
2004-08-16
打赏
举报
回复
底下是我自己写的读取文件中一行字符的方法,虽然能顺利读出第lineNumber行
但是还有一个问题没有解决:在模拟器上能正常显示出中文,
而在N7650上却显示乱码,希望能进一步改进
private String myReadLine (int lineNumber) {
String testFileName = "/test.txt"; //测试的文本文件名
ByteArrayOutputStream s;
InputStream in;
// 一行文本是以行结束标志(\n or \r)为终止的一行字符 一般是'\r'0D(13)后'\n'0A(10)
in = this.getClass().getResourceAsStream(testFileName);
s = new ByteArrayOutputStream();
try{
int ch=0;
int i=0;
while (i<lineNumber-1){ //跳过前面的n-1行
ch = in.read();
if (ch == 13) i++;
}
ch=in.read();
if ( ch ==10 || ch ==13) ch=in.read(); //若前面没有把换行符去除干净 则跳过一个字符
while ( ch !=13 && ch !=10 &&ch!=-1 ) {
s.write( ch );
ch=in.read();
}
in.close();
} catch (IOException ioe){
System.out.println(ioe.toString());
}
String str = s.toString();
try{
s.close();
} catch (IOException ioe){
System.out.println(ioe.toString());
}
return str.trim();
}
hesi726
2004-08-16
打赏
举报
回复
老兄啊,你这个问题时 编解码的转换问题啊!!
熟不熟悉UTF-8编码??
不熟悉的话,建议你上 google 找找看别人有没有编解码的类吧!!
或者看看,也很简单的!!一个中文的两个字节变成3个字节而已! ^_^
goodnow
2004-08-16
打赏
举报
回复
问题就在于文件中是ANSI方式编码的若干行中英文,
该如何读出并转换成UTF-8?
朋友别哭
2004-08-15
打赏
举报
回复
up
prok
2004-08-12
打赏
举报
回复
分别判断屏幕和字符串长度
zcwhgj
2004-08-11
打赏
举报
回复
这个例子是计算字符数及其宽度进行换行显示的东西.
private int appelement(String str, xx k1){
int nextBeginx = currentBeginx;
int strlength=str.length();
int endpos =0;
int strWidth=displayFont.stringWidth(str);
int subStringWidth=0;
//Integer hashIndex =new Integer(-1);
if(strlength>0){
if (strWidth >= displayWidth - currentBeginx) {
//需要进行载取
int slen =0;
do{
subStringWidth = displayFont.substringWidth(str, endpos, ++slen);
if (subStringWidth >= displayWidth-currentBeginx) {
if (k1 != null) {
k1.a(strList.size());
}
tuneCurStartY(displayFont.getHeight());
subStringWidth=displayFont.substringWidth(str,endpos, slen-1);
String s =str.substring(endpos, endpos+slen-1);
strList.addElement(new StringRegion(s,
currentBeginx,
getcurenBeginy(displayFont.getHeight(), true),
displayFont, colorType));
nextBeginx = 0;
endpos = endpos+slen-1;
slen = 0;
getNextBeginY(displayFont.getHeight());
}
else {
if (endpos+slen==strlength) {
if (k1 != null) {
k1.a(strList.size());
}
String s =str.substring(endpos, strlength);
strWidth = displayFont.stringWidth(s);
tuneCurStartY(displayFont.getHeight
strList.addElement(new StringRegion(s,
currentBeginx,
getcurenBeginy(displayFont.getHeight(), true),
displayFont, colorType));
currentBeginx =strWidth + currentBeginx;
nextBeginx = currentBeginx;
break;
//getNextBeginY(displayFont.getHeight());
}
}
}while(true);
}
else {
if (k1 != null) {
k1.a(strList.size());
}
tuneCurStartY(displayFont.getHeight());
strList.addElement(new StringRegion(str, currentBeginx,
getcurenBeginy(displayFont.getHeight(), true), displayFont,colorType));
currentBeginx += strWidth ;
nextBeginx=currentBeginx;
}
//重绘
}
if (strcanvas.blnScroll) {
strcanvas.repaint(0, 0, displayWidth, displayHeight);
}
return nextBeginx;
}
C# winForm Rich
Text
box、ListBox 每行
显示
不同的颜色,
自动换行
等等-2023/02/02
在WindowsForm项目开发中,我们有时候会遇到需求,将接收到的信息按照标志位,标记成不同的颜色。这时,普通的
Text
Box就满足不了需求。Rich
Text
box和Listox则可以满足需求,两者各有好处。选择哪一种,见仁见智。
stm32驱动液晶屏如何实现字符串
自动换行
和翻页循环
显示
源码
我写了大半天的程序,从像素位置
显示
字符串函数开始一点点调试改来的,我这里只做了32*32的字体实现,可以参考本程序,实现12,16,24等字体的这个功能,先看一下使用说明: 我封装出来的函数: // x:0-14,y:0-24,单位是每个字32像素的个数,改造成LCD1525这样的屏幕,我的屏幕是480*800,总共
显示
15x25个汉字(类似带字库的LCD12864屏幕那样的
显示
方式),支持自...
【花雕学编程】Arduino LVGL 之标签文本换行与对齐
在实际应用中,需要关注文本长度、对齐设置、性能考虑等因素,以确保系统的稳定性和用户的满意度。通过有效的实现,标签文本换行与对齐将成为用户界面设计中的重要组成部分,增强应用的功能性和易用性。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。LVGL不仅可以在Arduino上运行,还可以在多个嵌入式平台和操作系统上使用,包括ESP32、STM32、Linux等,具有良好的跨平台性。
【花雕学编程】Arduino LVGL 之优化文本
显示
通过其丰富的组件和灵活的特性,开发者可以实现多种应用场景中的图形界面。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。图像缓存使用:使用图像缓存可以减少内存占用和处理时间,预先声明并加载图像后,可以避免在运行时频繁加载,这样能提高性能,尤其在资源有限的嵌入式系统中。LVGL不仅可以在Arduino上运行,还可以在多个嵌入式平台和操作系统上使用,包括ESP32、STM32、Linux等,具有良好的跨平台性。
Java中setLineWrap(true)和setWrapStyleWord(true)优化
Text
Area
在 Java Swing 开发中, 是一个多行的文本区域组件,常用于
显示
和编辑大量文本。当处理长文本时,默认行为是不换行并且出现水平滚动条,这通常会降低用户体验。幸运的是, 提供了两个非常有用的方法: 和 ,它们可以显著改善文本的
显示
效果。 方法启用 的行内
自动换行
功能。启用后,当文本行的长度超过文本区域的宽度时,文本会
自动换行
到下一行,而不是延伸到视图
外部
并触发水平滚动条。 这样,当文本内容超出文本区域的宽度时,它会自动移动到下一行,保持内容在可见区域内。这对于需要展示长段文本的应用程序非常有用,如日志
J2ME
13,097
社区成员
26,491
社区内容
发帖
与我相关
我的任务
J2ME
Java J2ME
复制链接
扫一扫
分享
社区描述
Java J2ME
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章