我有一个搜索字段,但我想自定义它提供的文字提示,如“搜索”我想将其更改为我的语言,这将是“Busca”如何在下面的代码中执行此操作:
Container list = new Container();
hi.getToolbar().addSearchCommand(e -> {
String text = (String)e.getSource();
if(text == null || text.length() == 0) {
// clear search
for(Component cmp : list) {
cmp.setHidden(false);
cmp.setVisible(true);
}
hi.getContentPane().animateLayout(150);
} else {
text = text.toLowerCase();
for(Component cmp : list) {
Button mb = (Button)cmp;
String line1 = mb.getText();
boolean show = line1 != null && line1.toLowerCase().indexOf(text) > -1;
mb.setHidden(!show);
mb.setVisible(show);
}
hi.getContentPane().animateLayout(150);
}
}, 4);
顺便说一下,如何设置一个以当地语言呈现的Codename One Calendar?
编辑:
这就是我想改变的地方:
我应该设置这样的东西吗?
hi.putClientProperty("Search", hi.getToolbar());
我的代码如下:
String lang = L10NManager.getInstance().getLanguage();
if(lang != null) {
lang = lang.toLowerCase();
switch(lang) {
case "en":
UIManager.getInstance().setBundle(theme.getL10N("portuguese", "pt"));
break;
}
}
我得到例外:
java.lang.NullPointerException
at com.consultaprodutos.AplicacaoPrincipal.init(AplicacaoPrincipal.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.codename1.impl.javase.Executor$1$1.run(Executor.java:118)
at com.codename1.ui.Display.processSerialCalls(Display.java:1129)
at com.codename1.ui.Display.mainEDTLoop(Display.java:924)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
OBS:我在项目属性中找不到VM选项以设置-Defuser.language = pt
答案 0 :(得分:2)
结帐this tutorial on localization。它的要点是您创建一个资源包并安装它,然后一切都会自动更新到新的本地化文本。
键与文本匹配,因此如果文本是"搜索"只需添加"搜索"到资源包和翻译价值。