- 浏览: 707396 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
shappy1978:
自己踩死自己了,我还是有远见的嘛
该死的微软,该死的IE -
calosteward:
I know Zxing and shopsavvy, bot ...
[trans]COMPARISON OF MOBILE BARCODE SCANNERS -
qq690388648:
唉……四年前的Bug,现在还没改,Apache也有不足的地方啊 ...
POI解析Word表格备忘 -
shappy1978:
Now I get to say that every met ...
Jailbreak Detection on iOS -
hebeixiaolei:
你好,我想问一下,用poi如何往word文档里插入超链接呀!
POI读取Word文档总结
textarea对于中文结尾(断行处刚好是中文)无法正常断行,要解决这个问题,必须了解textarea是如何断行的,实际上查看其代码知道,展示时是通过splitWords函数把文字全部解析为单词,每个单词作为一个text对象添加到frame中,由于单词按照空格间隔,所以无法断中文的"单词".原来TextArea的源码中分词函数如下:
private void splitWords(String fullText, int style) { int beginIndex = 0; int endIndex = 0; String word; do { endIndex = fullText.indexOf(' ', beginIndex); if (endIndex == -1) { word = fullText.substring(beginIndex); } else { word = fullText.substring(beginIndex, endIndex); } if (word.length() != 0) { Text textWidget = new Text(); textWidget.setText(word); if (style != Font.STYLE_PLAIN) { textWidget.setDefaultFontStyle(style); } add(textWidget); } beginIndex = endIndex + 1; } while (endIndex != -1); }
Kuix的论坛上提供了下面的替换函数解决中文断行的问题.
private void splitWords(String fullText, int style) { String str = fullText;//+" "; String word=""; int len = str.length()-1; for (int i = 0; i <= len; i++) { char ch = str.charAt(i); if(i!=len) word = word + ch; if ((ch >= 48 && ch <= 57) || (ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122)) continue; if (word.length() != 0 || i==len) { Text textWidget = new Text(); textWidget.setText(word); if (style != Font.STYLE_PLAIN) { textWidget.setDefaultFontStyle(style); } add(textWidget); word = ""; } } }
应该说是做的很差的函数,对于数字,大小写26个英文子母外的其他字符都作为word的分隔符,这是相当有问题的,实际上应该把中文区间和空格作为分隔的基础,这个方法本身还有一个更大的缺陷,注意到原文的英文式分词是不把空格加进去的,也就是说Kuix默认会把每个text控件用一个空格的间隔分隔开了,所以替换为上述函数的结果就是显示中文虽然可以正常换行,但是每个中文之间都会有一个空格间隔着,看起来不美观,而且也很浪费空间.
那么这个"隐藏"的空格是哪里来的,查TextArea的源代码,发现getGap的函数很有意思,不是继承Widget从样式中获取,而是直接获得空格的宽度,所以实际上TextArea容器中每个widget的间隔就是一个空格,修改getGap函数可以去掉空格:
/* (non-Javadoc) * @see org.kalmeo.kuix.widget.Widget#getGap() */ public Gap getGap() { if (cachedGap == null) { // cachedGap = new Gap(getFont().charWidth(' '), 0); cachedGap = new Gap(0, 0); } return cachedGap; }
这样可以去掉中文之间的间隔,但是如果你试着去读取6,7页中文数据的话,立马就会报告Out of memory的错误,每个中文创建一个Text显然是相当浪费的,更完美的解决方案当然是自己断行.这里顺便说一下Kuix的标签和分行机制,首先看一下我的一个测试断行的分析描述:
1 无标签时支持<break/> 2 textarea不支持<break/>,不继承上一级容器的align属性,默认align是top,有中文时断行错误,出现只有很少文字的一行. 3 对英文断行也有缺陷,如果第一个单词就过长,会超出界限 4 多个空格也认为是1个空格,不支持回车,\n,<br>会保错 5 有意思的属性styled,default false,用途 Define if the text area use pseudo html style syntax. The value is a boolean (true or false). 假冒html样式?似乎是采用html的样式?整个reflow()函数都在为这个属性服务
测试结果发现textarea似乎支持有限的html标签,实际上支持的html标签包括 img,i,b,strong,u,br,p,div等,也就是说对html标签的支持只包含字体,段落回车和图片。但是如果直接写在标签中都必须做转义才能使用,否则会报Unknow tag的错误,比如<br/>必须转义为<;br/>;还有另外一种形式可以不用转义,此时可以直接写入html标签和<break/>,如下:
<textarea style="align:top-left"><![CDATA[test<br>new line]]></textarea>
这个是题外话,需要进一步了解请自行看TextArea.reflow和LightXmlParser的代码,注意到reflow大多数的代码其实都是解析和实现简单的html标签。
Kuix断行实际上是依靠text来实现的,textarea只不过保证英文单词不被拆分在不同的行,而且猜测默认都是采用flowlayout来实行布局。要实现软回车,必须自己加上Kuix的标准标签<break></break>.而这个标签上面说过,在textarea的内容中也是不支持的.那么要实现中文断行,而且效果较好的话,就只能自己根据屏幕大小和字体断行,另外TextArea还有一个问题就是本身不支持textfield的编辑功能,这也是一个相当大的缺陷,作者说是因为两者展示时采用的方法不同,要实现它的编辑功能,必须另外弹出一个窗口进行编辑,具体方法不再提供,这里只分析Kuix的断行的处理方式,大家可以从网上另外找寻中文断行的代码参考.


评论
KUIX好久没更新了,我也很久没用了。不知道是不是停了。
发表评论
-
关于BlackBerry在线讲座的观感
2011-03-24 16:20 921整体印象:夸夸其谈,自我陶醉,缺乏特色,迟早步palm, ... -
【转】Zxing介绍
2011-02-28 11:13 2393源地址:http://blessdyb ... -
关于Android上的虚拟机(Kuix)
2011-01-17 12:00 1800个人对于Android的 ... -
Kuix贴士
2010-12-07 14:48 1324发现TextField有onchan ... -
Kuix组件Choice发现一个新的bug
2010-11-16 09:52 1074本来想偷懒,利用choice ... -
J2ME 3.0发布了,不过好冷
2010-10-22 17:41 1094http://java.sun.com/javame/down ... -
Kuix在魅族上的安装
2010-06-18 17:11 1047今天第一次在一台魅族上安装我的程序,结果不管是签名还是 ... -
关于J2ME的外部调用
2010-04-28 14:20 1593一开始学习J2ME的时候就问过一些“高手”们,如何调用 ... -
POI word目录处理备忘
2010-04-07 10:57 3428今天发现word文件的目录处理还不完善,原来只是想着完 ... -
5800入手小记
2010-03-26 16:18 1314我去年的这个时候很恶 ... -
J2ME签名备忘
2010-03-15 14:21 1462今天拿到VeriSign的签名,使用过程中碰到几个问题 ... -
J2ME签名备忘
2010-03-01 17:15 0Thawte代码签名证书操作指南 http://www.it ... -
Kuix TableLayout bug说明(2)
2010-01-28 11:24 1386今天又测试出TableLayout 的一个bug,如果表 ... -
Kuix TableLayout bug说明
2010-01-26 16:53 1881实际上用过TableLayout来作表格的人估计都碰到 ... -
Kuix ScrollPane修改备忘录
2010-01-20 09:00 1597本次修改目标:为ScrollPane增加横向和纵向两个滚 ... -
关于Kuix如何确定Widget的大小探讨
2010-01-14 16:20 1814由于Kuix作者设计理念的影响,所有的widge ... -
【转】Nokia MIDlet(MIDP 2.0)代码签名证书申请和使用指南
2010-01-07 16:33 1439http://embed.e800.com.cn/articl ... -
SMSLib在tomcat中报NoSuchPortException的问题
2010-01-06 18:32 3205在application的project运行正常,但是 ... -
SMS-Push激活J2ME程序 备忘录
2010-01-05 18:17 1949http://www.cnblogs.com/blues ... -
【转】将自定义 widget 嵌入 Kuix 界面
2009-12-31 08:37 1160http://blog.csdn.net/defonds/ar ...
相关推荐
这通常涉及到汉字拼音数据库的使用,以及对用户输入的实时分析和预测。 3. **软键盘设计**: 软键盘是在没有物理键盘的设备上提供输入的虚拟键盘。在qt输入法中,软键盘可能是通过Qt的QGraphicsView或QWidget等部件...
Ku波段射频收发组件的研制,本文对毫米波收发组件进行研 究,其具有频率高、波长短、波束窄、精度高、抗干扰能 力强和容量大等特点
该项目是利用Cocos Creator技术构建的Ku双端框架设计源码,总计包含219个文件,涵盖90个元数据文件、54个TypeScript文件、41个Python文件、9个JSON文件、6个Prefab文件、3个ZIP文件、2个MP3音频文件、2个PNG图像文件...
Ku波段卫星通信雨衰计算及分析 外文翻译
ASP源码—KU6高清影视爬虫 v2.0.zip 是一个基于ASP(Active Server Pages)编程语言的网络爬虫程序,专为抓取KU6高清影视网站的资源而设计。KU6是中国知名的在线视频分享平台,提供丰富的高清影视内容。此爬虫程序的...
【ASP源码分析】 在"ASP实例开发源码—KU6高清影视爬虫asp版 v2.0.zip"中,我们可以预期找到以下几个关键部分: 1. **HTML模板**:用于呈现抓取到的视频信息,通常包含HTML和嵌入的VBScript或JScript代码。 2. **...
FPGA SATA IP,K7 V7 KU等全系列支持,可提供源码或网表,附赠使用手册与测试例程。 SATA 1 2 3全速支持,三星 凯侠等SSD均通过测试,SATA3速度实测写450MB s,读实测470MB s,速度稳定可靠。 命令接口简单易操作,...
标题中的"su'do'ku_sudoku_MATLAB解数独_matlab_数独游戏_数独_源码"明确指出我们将探讨的是使用MATLAB编程解决数独谜题的方法。MATLAB的高效性和灵活性使得它能够快速构建和测试算法,为数独谜题提供解决方案。 ...
【ku6网视频下载器ku6downsetup】是一款专门针对ku6网站的视频下载工具,旨在帮助用户方便快捷地将ku6网站上的视频资源保存到本地。这款软件因其易用性和高效性而受到用户的认可,使得用户能够离线观看原本在线的ku6...
ku波段高频头电路,介绍KU波段高频头的有关电路及相关设计
TCL王牌LCD32P08A TSUMV36KU LF机芯 HKC 是TCL品牌下的一款液晶电视产品,其型号为LCD32P08A。该产品采用了TSUMV36KU LF机芯,并且是由香港HKC公司生产的。LCD32P08A是该系列液晶电视中的一个型号,LCD指的是液晶...
【ku6视频聊天室源代码】是一个用于在线视频交流的平台,其核心技术涵盖了网络通信、音视频编解码以及实时传输等多个方面。源代码的提供为开发者提供了深入了解和研究视频聊天室实现机制的机会,同时也为自定义开发...
7. **播放列表管理**:用户可以创建和管理自己的播放列表,方便组织和观看视频。 综合以上信息,"ku6downsetup"是一款集视频下载和播放于一体的工具,专为酷6网用户设计,提供便捷的视频获取和播放体验。它的易用性...
3. **数据分析**:通过对网页源码进行解析,提取出有价值的数据进行统计分析。 #### 六、扩展学习 除了上述基本方法外,还可以探索更高级的技术和工具,如使用 Selenium 或 Puppeteer 这样的浏览器自动化工具进行...
7. **性能优化**:Common库的源码中可能会包含一些性能优化的技巧,如内存池管理、缓存机制等。通过研究源码,我们可以学习到如何提升代码的运行效率。 8. **设计模式**:源码中往往体现了多种设计模式,如工厂模式...
### Ku波段微带天线阵的设计 #### 概述 随着卫星通信技术的发展和频谱资源日益紧张,实现高效能、多用途的天线设计成为研究的重点之一。特别是对于Ku波段微带天线阵的设计尤为重要。本文介绍了一种适用于Ku波段的...
基于FMC+的KU115KU085高性能PCIe载板 本文档介绍了一款基于FMC+的高性能PCIe载板,采用Xilinx公司Kintex UltraScale系列FPGA芯片,具备高性能计算、高速数据交互和灵活的扩展接口。下面是该载板的详细知识点: 1. ...
**GMA302KU 数据表详解** GMA302KU 是一款高性能的G-Sensor(重力感应传感器),广泛应用于移动设备、...参考提供的“GMA302KU-中文简洁版.pdf”和“GMA302KU Datasheet V1.0.pdf”文件,可以获取更详尽的技术信息。
《ku6影视小偷 1.0》是一个基于ASP编程语言开发的简易视频资源采集程序。这个1.0版本的特点在于其清爽无广告的界面,为用户提供了良好的使用体验。程序设计者有意预留了广告位,暗示后续版本将可能集成广告功能,以...
此次更新变化不大,主要是修复了一些出站链接,这些错误基本都是由目标站更新导致。 老用户请覆盖search.asp 和 index.asp ...演示地址:http://www.bai00.com/movie/ku6 此次更新时间 2010/6/11