快速业务通道

Java用户界面本地化实例探索 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
e ;

清单一和二定义了一个默认资源文件,和美国地区的资源文件。其中等号左边的字符串表示主键,它们是唯一的。为了获得主键对应的值,你可以调用ResourceBundle类的getString方法,并将主键作为参数。此外,文件中以“#”号开头的行表示注释行。需要注意的是清单二中的“\u4e2d\u56fd”,它是字符“中国”的Unicode字符码。是使用Java自带的native2ascii工具转换的(native2ascii in.properties out.properties),这是为了不在程序界面中产生乱码。

清单四:

cmdRed.setText(bundle.getString("red.label")); cmdBlue.setText (bundle.getString("blue.label")); cmdGreen.setText (bundle.getString("green.label"));

Java用户界面本地化实例探索(2)

时间:2010-12-16

清单二中的cmdRed、cmdBlue、cmdGreen 为按钮。bundle.getString("red.label")为得到资源文件中主键是red.label的值。

好了到此为止Java程序用户界面的本地化就是这么简单。不过,要提醒你的是在为用户界面事件编写事件监听器代码时,要格外小心。请看下面这段代码。

清单五:

public class MyApplet extends Japplet implements ActionListener{   public void init(){    JButton cancelButton=new JButton(“Cancel”);    CancelButton.addActionListener(this);    ...   }   public void actionPerformed(ActionEvent e){    String s=e.getActionCommand();    if(arg.equals(“Cancel”);     doCancel();    else ……   } }

如果你对清单五的代码不进行本地化,她就可能会运行的很好。但当你的按钮被本地化为中文时,“Cancel”变为了“取消”。这时就会出现你不愿意看到的问题。下面有三个方法可以消除这个潜在的问题!

1> 使用内部类而不使用独立的actionPerformed程序。

2> 使用引号而不使用标签来标识组件。

3> 使用name属性来标识组件

本例稍后的代码就是采用第一种方法来消除这个问题的。

清单六:完整的代码

//:MyNative.java /** Copyright (c) 2003 Dorian. All rights reserved @(#)MyNative.java 2003-12-21 @author Dorian @version 1.0.0 visit http://www.Dorian.com/Java/ */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; /** 这是一个将Java程序界面地方化的例子本例采用读取属性文件来达到目的 @see java.util.Locale; @see java.util.ResourceBundle; @see java.util.MissingResourceException; */ public class MyNative{   public static void main(String[] args){    JFrame frame = new MyNativeFrame();    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    frame.setResizable(false);    frame.setVisible(true); // Pop the window up.   } } class MyNativeFrame extends JFrame{   public MyNativeFrame(){    Locale locale = Locale.getDefault();//获取地区:默认    //获取资源束。如未发现则会抛出MissingResourceException异常    //"Properties.Dorian"为在Properties下以Dorian为文件名的默认属性文件    ResourceBundle bundle = ResourceBundle.getBundle("Properties.Dorian",locale);    setTitle(bundle.getString("Title"));//通过getString()的返回值来设置Title    setSize(WIDTH,HEIGHT); // Set the window size.    panel=new MyNativePanel();    Container contentPane=getContentPane();    cont

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号