最近在用java开发项目,项目有个需求是要求能够界面中英切换,也就是java的国际化问题。
国际化之前我都是用中文字体来完成整个项目的,直至项目的功能都实现后才将其进行国际化,也就是添加英文显示。
在进行国际化的过程中,出现了一个问题,就是对java按钮的名字进行更改失败的问题。在项目开发之前,我一直用中文先进行开发,有一些按钮,在被用户触发之后会改变名字,比如说一个button,在被按下之前,显示的是打开,在按下之后则显示“关闭”,在进行国际化后,这种功能消失了,也就是说button通过setText(" ")去改变其名字的效果会失效。寻找了原因后,发现是中英切换所带来的问题,一旦把button加入到国际化的函数进去后,button上面所能显示的只是在两个切换表里面所输入的信息,人为的在其它地方对按钮进行更改将会无任何的效果。只能是这个按钮的中文“打开”状态和英文的“open”,而切换后的“关闭”和“close”均无法显示。
遇到这种问题时,可以通过定义一个全局的变量来对所选择的语言进行监听,分别赋值给0或1,不用把button加在国际化的列表里面,而是额外的用一个函数去实现它,写一个方法,用0和1来判断其是中文还是英文,以此来改变或是添加button里面的内容。修改时也不可放在国际化的函数里面进行修改,而是再另外的写一个方法。这样就可以实现中英切换按钮,并且将按钮被按下时的名字改变掉。