仓酷云

标题: 来看Java用户界面当地化实例探究 [打印本页]

作者: 冷月葬花魂    时间: 2015-1-18 11:26
标题: 来看Java用户界面当地化实例探究
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。
国际化是使程序具有充足的天真性、能活着界上任何区域运转的历程。国际化所请求的一定了局是中央化DD使一个程序可以运转在特定区域的历程。本文实验用一个复杂的例子来演示Java用户界面当地化。Java言语内核基于Unicode3.0(Java1.4)供应了对分歧国度和分歧言语笔墨的外部撑持,因为后天的缘故原由,Java关于国际化的撑持远远要比C/C++来的优胜。
在我看来当地化必需满意以下的三个前提:
1、程序必需能读、写和操纵当地化的文本。
2、程序在显现日期和工夫、使数字格局化和排序子串时,必需切合中央习气。(经由过程java.text包内里的类能够完成这些请求)
3、一切用户可见的文本都能在运转时取得,而不是间接写进程序中。(经由过程java.util包里的ResourceBundle类和他的子类能够完成这些请求。)
完成这三个方面能够真正完成程序的国际化。
起首让我们来懂得一下区域。区域代表一个地舆上、政治上或文明上的地区。在Java中,区域由java.util.Locale类暗示。区域经常以一种言语来界说,该言语则由其尺度的小写双字母代码暗示。(比方:en代表英国,fr代表法国,zh代表中国),但偶然候言语是不克不及代表一个区域的,那就要在言语前面再加上一个国度或该国度的地区(比方:en_US代表美国,zh_TW)。Locale类保留着一个静态的默许区域,它能够用Locale.setDefault()和Locale.getDefault()来设置和查询。一个程序能够天生和利用恣意数量的非默许Locale对象。
让我们再来看一下Unicode字符编码。Java利用Unicode的字符编码,其自己就是迈向国际化的一年夜步。Unicode编码其每一个字符都占两个字节。用u****的情势暗示。Unicode的字符能够等价于其他编码的字符(比方:从u0020到u007E的字符等价于ASCII和ISO8859-1字符的0x20到0x7E)。
本文次要是对用户界面中央化,因为我利用的是资本束!以是有需要对资本束作一下注释。
为界说一束中央化的资本,你必要天生一个ResourceBundle(资本束)的子类而且供应handleGetObject()和getKeys()办法的界说。为了在程序中利用来自ResourceBundle的中央化资本,就必要先挪用静态的getBundle()办法,用getBundle()取得一个ResourceBundle对象,然后再用getObject()办法往依照名字来查找资本。固然也能够利用getString()复杂的把getObject()的前往值分派给一个String对象。GetBundle()办法接纳basename_language_country_variait----没找到的话->basename_language_country----没找到的话->basename_language----没找到的话->basename(默许资本文件)的算法寻觅符合的资本。假如以上都没找到的话,则会抛出一个MissingResourceException非常。
如今我们来看一个复杂的例子,怎样使Java程序用户界面中央化的。
起首我们的程序必要查找特定Locale对象联系关系的资本包,以是应当界说一个Local对象,来猎取当地默许的区域!然后能够挪用ResourceBundle的getBundle办法,并将locale对象作为参数传进。
清单一:
Localelocale=Locale.getDefault();//猎取区域:默许
//猎取资本束。如未发明则会抛出MissingResourceException非常
ResourceBundlebundle=ResourceBundle.getBundle("Properties.Dorian",locale);
清单一中的”Properties.Dorian”代表Properties包下以Dorian定名的默许资本文件。如许就能够利用资本文件了!让我们来看看资本文件是怎样界说的。
清单二:
Title=u4e2du56fd;
red.label=u7ea2u8272;
green.label=u7effu8272;
blue.label=u84ddu8272;
清单三:
#文件Dorian_en_US.properties,是美国区域的资本束
#它掩盖了默许资本束
Title=America;
red.label=Red;
green.label=Green;
blue.label=Blue;
清单一和二界说了一个默许资本文件,和美国区域的资本文件。个中等号右边的字符串暗示主键,它们是独一的。为了取得主键对应的值,你能够挪用ResourceBundle类的getString办法,并将主键作为参数。别的,文件中以“#”号开首的行暗示正文行。必要注重的是清单二中的“u4e2du56fd”,它是字符“中国”的Unicode字符码。是利用Java自带的native2ascii工具转换的(native2asciiin.propertiesout.properties),这是为了不在程序界面中发生乱码。
清单四:
cmdRed.setText(bundle.getString("red.label"));
cmdBlue.setText(bundle.getString("blue.label"));
cmdGreen.setText(bundle.getString("green.label"));
<p>
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
作者: 只想知道    时间: 2015-1-21 06:18
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 柔情似水    时间: 2015-1-30 09:33
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 小妖女    时间: 2015-2-1 05:22
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 飘灵儿    时间: 2015-2-3 11:19
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 因胸联盟    时间: 2015-2-4 10:51
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 分手快乐    时间: 2015-2-9 22:17
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 再见西城    时间: 2015-2-16 10:19
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 灵魂腐蚀    时间: 2015-2-16 21:57
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 莫相离    时间: 2015-2-17 08:41
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: admin    时间: 2015-2-26 02:32
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 乐观    时间: 2015-3-8 10:52
是一种使用者不需花费很多时间学习的语言
作者: 愤怒的大鸟    时间: 2015-3-13 08:09
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2