Java me 与命令侦听器和新形式J2ME混淆

Java me 与命令侦听器和新形式J2ME混淆,java-me,midp,lcdui,Java Me,Midp,Lcdui,编辑:我想我需要帮助才能在刚刚管理的列表中获取所选元素 让它显示一个新的表单,但我在查找与source 3.0兼容的代码时遇到了很多麻烦。 我一直在尝试制作一个应用程序,允许用户选择一个日期,然后添加 并根据所选日期删除事件。到目前为止,我已经创建了第一个屏幕 这是供用户选择的选项列表。这些选项包括: 选择日期 添加事件 删除事件 浏览事件 我遇到的问题是,我无法了解如何根据列表中的选定项显示新表单。我找到了一个小教程,它允许我添加一个显示所选项目的命令侦听器,但我很难弄清楚它是如何在列表中

编辑:我想我需要帮助才能在刚刚管理的列表中获取所选元素
让它显示一个新的表单,但我在查找与source 3.0兼容的代码时遇到了很多麻烦。


我一直在尝试制作一个应用程序,允许用户选择一个日期,然后添加
并根据所选日期删除事件。到目前为止,我已经创建了第一个屏幕
这是供用户选择的选项列表。
这些选项包括:

  • 选择日期
  • 添加事件
  • 删除事件
  • 浏览事件
我遇到的问题是,我无法了解如何根据列表中的选定项显示新表单。我找到了一个小教程,它允许我添加一个显示所选项目的命令
侦听器,但我很难弄清楚它是如何在列表中选择
项目的,以及如何基于所选项目创建新表单的

这是到目前为止我的代码

    import javax.microedition.lcdui.Alert;
    import javax.microedition.lcdui.AlertType;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.List;
    import javax.microedition.lcdui.Form;
    import javax.microedition.midlet.MIDlet;

    public class mainMidlet extends MIDlet implements CommandListener {

      private Display display;
      private List list = new List("Please Select a Option", List.IMPLICIT);
      private Command select = new Command("Select", Command.SCREEN, 1);
      private Form form;
      Alert alert;

      public mainMidlet() {
        display = Display.getDisplay(this);   

        list.append("Select Date", null);
        list.append("Add Events", null);
        list.append("Remove Events", null);
        list.append("Browse Events", null);
        list.addCommand(select);
        list.setCommandListener(this);

      }

      public void startApp() {
        display.setCurrent(list);
      }

      public void pauseApp() {
      }

      public void destroyApp(boolean unconditional) {
      }

      public void commandAction(Command command, Displayable displayable) {
        if (command == List.SELECT_COMMAND) {
          String selection = list.getString(list.getSelectedIndex());
          alert = new Alert("Option Selected", selection, null, null);
          alert.setTimeout(Alert.FOREVER);
          alert.setType(AlertType.INFO);
          display.setCurrent(alert);
        } else if (command == select) {
          destroyApp(false);
          notifyDestroyed();
        }
      }
    }

您可以添加多个表单并在它们之间切换

  public void commandAction(Command command, Displayable displayable) {
      if (displayable == list) {
          if (command == List.SELECT_COMMAND) {
              switch (list.getSelectedIndex()) {
                  case 0: // select date
                      display.setCurrent(someForm);
                      break;
                  case 1: //add events
                      display.setCurrent(someOtherForm);
                      break;
              }
          } else if (command == select) {
             destroyApp(false);
             notifyDestroyed();
          }
      }
      if (displayable == someForm) {
          //but it's better practice to make each form a different class implementing CommandListener and it's own commandAction. And leave the display public static in MIDlet class
          //...
      }
  }

完全忘记了开关和机箱,谢谢,现在就开始吧:D在扩展的情况下应该实施吗?顺便说一句,我已经改变了它。@NiteshVerma绝对是。谢谢,不客气。事实上,我也在做同样的工作,刚刚看到了这篇文章。你能告诉我如何做到这一点吗,“让每个表单成为一个不同的类”,我创建了一个新类,添加了表单对象和侦听器,但我如何在switch case中添加它。@NiteshVerma我不再是J2ME开发人员,记不太清楚了。我不明白你的问题。在“生成每个表单”的不同类下,我的意思是使类YourClass扩展表单并实现CommandListener。因此,在CommandAction中,可显示的是表单。因此,每个表单都在自己的侦听器中处理自己的命令。如果没有列表,则不需要切换。开关是用来检查列表中的哪些项目已经被调用的。你是否考虑发布一个新的问题而不是编辑这一个问题(这似乎是被回答的,不是吗)?在这种情况下,回答者往往不喜欢