EBookMgr 多国语言与Icon
来源:互联网 发布:阿里云 vps 6个月 编辑:程序博客网 时间:2024/04/28 23:47
Icon
先说说简单的内容,如何在一个JButton或者JMenuItem中显示一个图标:
JButton或者JMenuItem这样支持Icon的控件通常都有一个这样的构造方法,以JMenuItem为例:
只需要使用这个构造方法即可,但是如何获得一个Icon对象呢?
要想获得一个Icon首先必须有一个图像文件,并且放在一个特定的位置,这个位置通常于Java类同目录或者在其下的子目录中(要求运行时环境,例如classes目录或者jar文件中相同的位置也由这些图像文件)。
以EBookMgr为例,代码斗方在ebookmgr目录中,图像文件放在子目录ebookmgr.images目录中,那么得到Icon共有两步:
第一步:
第二步:
之后就可以使用前面提到的构造方法了。注意在生成imageUrl的过程中使用的是构造Icon的类和图像文件之间的相对路径(也就是说是:images/menu/setting.png而不是ebookmgr/images/menu/setting.png)。
i18n
现在说一说稍微复杂一些的i18n,i18n的主要思想是:将所有文本标签按照语言分成套,放在不同的文件中(我们在这里以属性文件为例)在用一种动态的方法访问这些文件,动态的含义是能够根据程序运行的地域、语言来自动从对应的文件种取得需要的文本标签。
“将所有文本标签按照语言分成套”的含义是:
定义一系列命名为 basename_LanguageCode_CountryCode.properties的文件,这些文件通常也放在特定的目录中(通常是resources子目录)。
这里我们在ebookmgr.resources目录中定义了如下文件:
ui.properties 默认的属性文件,对应的地域无法匹配到特定的属性文件时使用这个文件(例如波多黎各语)
ui_en_US.properties 英文美国
ui_zh_CN.properties 中文中国
ui_ja_JP.properties 日语日本
“动态的方法”来源于java.util.ResourceBundle类的支持。
这里注意两个地方,第一是使用的跟资源名:ebookmgr.resources.ui,第二是Locale.getDefault()获得了运行当前软件的地域。所以此时的res表示的就是特定语言版本的内容。(可以传入指定的参数来改变默认的地域,这就是在中文平台下使用英文,或者日文主题的实现原理)
之后就可以使用getString(String key)方法获得对应的字符串了。
顺便说一下properteis文件中保存非ASCII字符时会被自动转义,参看以下截图:
- EBookMgr 多国语言与Icon
- android多国语言与国际化
- 多国语言
- 多国语言解决方案
- 多国语言支持
- 多国语言
- c# 多国语言
- 移植多国语言
- MTK--多国语言
- 多国语言实现
- 支持多国语言
- 多国语言实现
- Android 多国语言
- pyqt多国语言
- Rails多国语言
- 多国语言
- 关于多国语言
- rtti多国语言
- java3d 配置(linux gentoo )
- libtool的工作原理
- 跳槽为何是第一生产力?
- 拿什么拯救你 月光族
- MySQL-索引分析和优化
- EBookMgr 多国语言与Icon
- 090925(星期五):处理CTreeCtrl的OnDbClick事件
- MySQL-存储引擎的介绍
- QtEmbedded软键盘输入法实战(附例子)
- 异常:Caused by: org.hibernate.MappingException: must specify an identifier type:
- pku 3140 Contestants Division(树的划分)
- 正则表达式之中文
- SQL语言的布局和IllegalArgumentException
- 考研在即