1
我使用codenameone來開發我的移動應用程序。在這個應用程序中,我手動實現了一些類和代碼,例如,由於某種原因,通過硬編碼而不使用codenameone設計器來創建所有表單。lwuit更改UI語言
通過我想在像什麼codenameone使用形式進行切換的方法,所以我用一個變量的類型Form
稱之爲prevForm
,當我想打開窗體我將它設置爲目前的形式,然後我會告訴新形式。
好吧,那是主要場景。在這個應用程序中我也想實現國際化,所以我爲這個應用程序創建了自己的哈希表(波斯語和英語)。
這是我的問題:
如何設置或更改語言,並將其應用到我開的形式?
我的表單之間的導航方法是好的嗎?
這裏是我的代碼:
public class BaseForm extends Form implements ActionListener {
public BaseForm(){
this.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
}
Command exit, ok, back;
Form prevForm;
protected void initForm(){
}
protected void showForm(){
}
protected void showForm(final Form prevForm){
//String name = this.getName();
//if("Reminder".equals(name) || "3Transaction".equals(name))
{
this.prevForm = prevForm;
Form f = this;
back = new Command("Back");
//ok = new Command("Ok");
//delete = new Command("Delete");;
Button button = new Button("Button");
f.addCommand(back);
//f.addCommand(ok);
//f.addCommand(delete);
//f.addComponent(button);
f.addCommandListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (ae.getCommand().equals(back)) {
//Do Exit command code
System.out.println("Back pressed");
prevForm.showBack();
} else if (ae.getCommand().equals(ok)) {
//Do Start command code
System.out.println("Ok pressed");
}
}
});
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
//Do button code
System.out.println("Action performed");
}
});
}
showForm();
}}
開放嵌套形式,我用這個代碼:
LanguageUI lang = new LanguageUI();
lang.showForm(this);
改變語言[表]:
protected boolean onBtnSave() {
if(isRbFarsiSelected()){
UIManager.getInstance().setResourceBundle(new CommonSettings().getFarsi());
}
else {
UIManager.getInstance().setResourceBundle(new CommonSettings().getEnglish());
}
return false;
}
謝謝Ajibola,但我不能和我不想使用資源文件。此外,我不能使用此代碼(「esources.open(」/ theme.res「);」)。 – Ahmad
好吧,您將不得不創建自己的幫助器方法,類似於lwuit如何處理它們,或者使得android更好地完成它,也就是說,您可以使用相應的轉換保存id並在需要時從中獲取該id適當的翻譯。 – Ajibola
好的,但我不知道如何將其應用於一種稱爲語言形式的形式。我該怎麼做? – Ahmad