|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。
BiDi是甚么
W3C对双向字符集言语(即BiDi)举行了以下的界说:
双向字符集言语一般是指笔墨能够从左到右(LTR)和从右到左(RTL)双向誊写的笔墨。比方,阿拉伯和希伯来言语的笔墨誊写一般是从右到左,可是个中的别的字符集(比方拉丁笔墨)仍然坚持从左到右的格局。固然别的的言语笔墨,比方英文,假如包括阿拉伯大概希伯来笔墨择要的话,也能够是双向誊写的。一般将主偏向称为全局偏向。
关于先容一种的新的常识大概手艺,笔者一般习气于从“what、why、who、how”几个方面来举行报告。即BiDi是甚么,这在本节中作了先容。为何必要撑持BiDi,这会鄙人一节中先容。随后则侧重于先容作为一位Java软件开辟职员在撑持BiDi的时分要思索哪些成绩,怎样做才干完成BiDi撑持,和一些罕见的成绩息争决技能。
为何必要BiDi撑持
关于利用双向字符集区域的人来讲,关于本国笔墨和别的字符集笔墨,比方和英语混排的情形,在纸面上誊写将是一件必要有计划技能的事变。以下所示:
CIBARAenglishCIBARA
CIBARA代表阿拉伯字符,english代表英语字符。誊写者必要从右到左誊写字符“A”“R”“A”“B”“I”“C”,在纸面就酿成CIBARA。随后要誊写英笔墨符english,这段字符要从左到右显现,这就必要誊写者要先计划符合的空缺来誊写笔墨,然后持续上面的阿拉伯字符的显现。不然要末空间不敷,写不下那末多笔墨,要末留下一段空缺影响文档的全体布局。
盘算机的呈现对双向字符集的录进应当是一年夜福音,下面所述的空缺计划将不再是成绩。当盘算机切换到BiDi笔墨的录进体例后,关于一样平常的双向字符集字符,比方阿拉伯笔墨,显现将遵守全局偏向从右到左(RTL)。当必要输出英笔墨符的时分,盘算机将主动处置英文字符的显现,将先输出的字符主动向右边排,后输出的字符显现在后面字符的右边,将先输进的笔墨顶到了左边,而录进光标将一向停止在英文录进的最右边,顺次处置随后的笔墨录进,并显现。如许录进者就不必体贴这段英文笔墨将占有多年夜空间,并且英文内容坚持了从左到右(LTR)的偏向。当用户必要输出阿拉伯笔墨的时分,阿拉伯字符将主动安排到英文内容的左边,录进光标也跟从到了阿拉伯字符的左边,入手下手一般的从右到左(RTL)的录进,并显现。
盘算机软件要在利用双向字符集的区域(次要是中东区域)发卖、利用,假如没有BiDi的撑持,将是一件不成能的事变。对BiDi的撑持也是软件国际化(globalization)尺度重要的构成部分,没有BiDi的撑持就不克不及说对软件完成了国际化的撑持。天下上各年夜软件公司都把对BiDi的撑持作为产物可否公布的一个主要审核目标。
现实上对BiDi的撑持,要思索的内容十分多,从底层BiDi算法(比方ICU4J)、编码(Unicode)、存储、输出法、直至开辟工具的撑持。但是作为一位开辟职员(本文次要针对Java开辟职员),实在不必要懂得太多底层完成的细节。针对分歧的软件图形库,只必要很少的代码层面的处置就能够完成对BiDi的撑持。假如读者想要懂得更多BiDi层面的常识、术语,比方logicalorder、visualorder等等能够参照developeWorkss大概W3C上的别的文章。
Java1.5对BiDi的撑持
JavaSDK分歧的版本对BiDi的撑持才能也是纷歧样的。本文的示例和代码片断次要是针对JDK1.5的版本。
Java供应了AWT和Swing两种图形库,这两种图形库对BiDi的撑持是纷歧样的。软件对BiDi展现层面的撑持包括全部软件界面的结构从LTR到RTL的变化,和控件的布局。比方ComboBox的下拉箭头从右边移到右侧,控件内里的笔墨的结构转换,笔墨的录进等等。
AWT
AWT(AbstractWindowingToolkit),中文译为笼统窗口工具包,是Java供应的用来构建和设置Java图形用户界面的基础工具。这个工具包供应了一套与当地图形界面举行交互的接口。AWT中的图形函数与操纵体系所供应的图形函数之间有着逐一对应的干系。当我们使用AWT来构件图形用户界面的时分,实践上是在使用操纵体系所供应的图形库。关于BiDi来说,AWT组件内里的笔墨结构实践上依附于底层操纵体系。别的,AWT组件对BiDi请求的控件结构也有诸多缺点,因而Java软件开辟职员假如要开辟撑持BiDi的使用程序,就不要接纳AWT。
<p>
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。 |
|