gpt4 book ai didi

java-me - 对命令监听器和新形式 J2ME 感到困惑

转载 作者:行者123 更新时间:2023-12-02 18:54:59 25 4
gpt4 key购买 nike

编辑: 我相信我需要帮助在我刚刚管理的列表中获取所选元素
让它显示一个新的表单,但我在寻找与源代码 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
//...
}
}

关于java-me - 对命令监听器和新形式 J2ME 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com