自定义搜索过滤器和日历Codename One

时间:2018-05-01 14:56:56

标签: codenameone

我有一个搜索字段,但我想自定义它提供的文字提示,如“搜索”我想将其更改为我的语言,这将是“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?

编辑:

我看了教程,但是我遇到了问题,我想我没有正确设置,看看: theme.res

这就是我想改变的地方:

Search filter

我应该设置这样的东西吗?

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

1 个答案:

答案 0 :(得分:2)

结帐this tutorial on localization。它的要点是您创建一个资源包并安装它,然后一切都会自动更新到新的本地化文本。

键与文本匹配,因此如果文本是"搜索"只需添加"搜索"到资源包和翻译价值。