简易code如下:import java.util.Properties;import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;public class Test extends ApplicationWindow {
private Action action_chinese;
private Action action_english; private Properties pp = new Properties(); public Test() {
super(null);
addMenuBar();
pp.put("hello", "Hello");
} protected Control createContents(Composite parent) {
parent.getShell().setText("TEST");
Label label = new Label(parent, SWT.CENTER);
label.setText(pp.getProperty("hello"));
return parent;
} protected MenuManager createMenuManager() {
MenuManager main_menu = new MenuManager(null);
MenuManager menu_language = new MenuManager("&Language");
main_menu.add(menu_language); menu_language.add(action_chinese = new Action("&Chinese",
Action.AS_CHECK_BOX) {
public void run() {
action_english.setChecked(false);
pp.setProperty("hello", "你好");
}
});
menu_language.add(action_english = new Action("&English",
Action.AS_CHECK_BOX) {
public void run() {
action_chinese.setChecked(false);
pp.setProperty("hello", "Hello");
}
});
action_english.setChecked(true);
return main_menu; } public static void main(String[] args) {
Test wwin = new Test();
wwin.setBlockOnOpen(true);
wwin.open();
Display.getCurrent().dispose();
}
}我想在点击Language菜单中的chinese或者english时,将整个界面中所有的文字显示都切换成相应的语言。这个例子很简单,我只做了一个label的设计,请高手给个解决方法。
请别告诉什么我直接对这个label重新设置text,我要的不是这个东西,而是动态获取组件并重新载入文字资源的方法,谢谢

解决方案 »

  1.   

    令,我在实际的程序中Properties中的内容会分别从两个不同的properties文件中读取,各自为:language_ZH.properties和language_EN.properties。
    里面的内容为:
    hello=你好
    =======
    hello=Hello这样在程序的组件setText时,可以直接用xx.setText(pp.getProperty("hello"))
      

  2.   

    问题就是我这个程序现在点了语言选项,界面文字是不会变的,我想请问怎么才能做到动态的将界面所有元素的text切换成相应的语言