使用Textfield切换到Java Me中的可显示内容

时间:2012-12-27 13:43:52

标签: java-me textfield midp lcdui

我正在使用java me,我使用表格displayables构建了一个应用程序。我正在尝试根据用户在文本字段项中的输入切换到其他表单。例如,我希望用户能够在文本字段中键入数字“1”,然后将其转换为form1或键入“2”并将其转换为form2等。

执行此操作的代码是什么?

这就是我所做的,但它没有按预期工作:

form.setItemStateListener(new ItemStateListener() {


            public void itemStateChanged(Item item) {
                if (item == TextField) {
                     if ("1".equals(TextField.getString())) {
                        switchDisplayable(null, form1);
              }   
           }   
}

我按照建议完成了。我在textfield项目中添加了一个命令并监听它以读取文本字段内容,然后将内容作为字符串进行比较,以切换表单。请参阅下面的代码,仍然无效。我想也许有些东西我不知道或者我的逻辑不对。

        form.setCommandListener(new CommandListener() {

            public void commandAction(Command command, Displayable displayable) {
                if (command == getTextFieldItemCommand()) {
                    if ("1".equals(TextField.getString())) {
                        switchDisplayable(null, form1);
                    } else if ("2".equals(TextField.getString())){
                        switchDisplayable(null, form2);
                    }
                }
            }

1 个答案:

答案 0 :(得分:1)

看起来您希望在方便的时候调用方法itemStateChanged,就像在文本字段中的每个字符条目一样。

高于预期是错误的,API javadocs中解释了指定的行为:

  

由设备决定何时考虑将新值输入项目...通常,预计每次更改后都不会调用侦听器...

如上所述,使用itemStateChanged您想要的方式毫无意义,请考虑更改MIDlet的设计。


我可能只需要在窗体或文本字段中添加命令Go和命令监听器,并在用户调用该命令时查找文本字段内容,以找出要切换到的可显示内容。