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中,可显示的是表单。因此,每个表单都在自己的侦听器中处理自己的命令。如果没有列表,则不需要切换。开关是用来检查列表中的哪些项目已经被调用的。你是否考虑发布一个新的问题而不是编辑这一个问题(这似乎是被回答的,不是吗)?在这种情况下,回答者往往不喜欢