解析MIDP的高级事件处理机制[Java编程]
本文“解析MIDP的高级事件处理机制[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
MIDP中的事件处理机制在J2ME用户图形界面开辟中具有举足轻重的地位,本文将深化解析MIDP高级事件处理机制,本文供应的程序是新手学习不错的例子.在接下来的文章我会持续报告初级事件处理机制.
MIDP的事件处理处理机制一样是采取回调的机制,你可以参考AWT的事件处理原理.在MIDP中分高级事件处理和初级事件处理,前者主如果针对高级UI,此后者主如果这对Canvas这样的初级UI的.不管怎样,我们必须首先介绍的是Command类,移动信息设备的输入主要来自于手机的键盘,导航则主如果由按钮来完成的,比方软键和导航键.Command类包装了行动的信息,但是并没有包含行动触发后应当做什么,这些是在CommanListener内实现的.看看Command的构造器吧
Command command = new Command("退出",Command.EXIT,1),构造器的参数辨别表示按钮的标签,按钮的范例和优先级别.移动信息设备是按照背面两个参数对按钮举行筹划的.
高级事件处理主要由两个接口来实现,一个是CommandListener,一个是ItemStateListener.在CommandListener中定义了办法commandAction(Command cmd,Displayable disp),我们必须实现这个办法来完成事件处理,奉告利用程序当在disp界面下假如cmd按钮并按下的时刻他应当去做什么.ItemStateListener中定义了办法itemStateChanged(Item item),利用程序通过他来得到在Form内的item内部状况发生改变的事件.用户在举行以下操作的时刻城市触发这样的事件,调整交互性Guage、在TextField内输入大概改正内容、改正DateField、改变ChoiceGroup的状况.
固然我们已经通过上面的介绍理解了事件处理的机制,但是你会发现我们举行用户界面导航的时刻仍旧非常的麻烦,因为这不是在浏览器上开辟界面,我们能做的只能是通过Command来举行处理.下面我将通过一个例子来阐明若何利用CommandListener和ItemStateListener,这个例子有两个界面一个界面用来输入另一个用来显示用户的输入.在输入界面假如我们挑选click这个ChoiceGroup,界面会呈现别的一个文本输入,假如我们不挑选他就不会呈现.在这样一个程序中充分阐明了若何利用上述两个接口来完成MIDP高级事件的处理,但是也表暴露了导航可贵问题,在今后的文章中我会介绍若何利用MVC的计划情势来办理这个问题.
程序源代码以下所示:
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class HighLevelMIDlet extends MIDlet
{
private Display display;
private MainUI mainUI;
private DisplayUI displayUI;
protected void startApp() throws MIDletStateChangeException
{
initMIDlet();
}
private void initMIDlet()
{
display = Display.getDisplay(this);
mainUI = new MainUI(this);
displayUI = new DisplayUI(this,mainUI);
display.setCurrent(mainUI);
}
public DisplayUI getDisplayUI()
{
return displayUI;
}
public Display getDisplay()
{
return display;
}
protected void pauseApp()
{
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
}
}
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
public class MainUI extends Form implements CommandListener, ItemStateListener
{
private HighLevelMIDlet midlet;
private TextField inputField;
private ChoiceGroup choice;
private TextField inputField2;
private int index;
public static final Command cmd = new Command("Display", Command.ITEM, 2);
public MainUI(HighLevelMIDlet midlet)
{
super("form");
this.midlet = midlet;
init();
}
public void init()
{
inputField = new TextField("Input", null, 25, TextField.ANY);
inputField2 = new TextField("Input2", null, 25, TextField.ANY);
choice = new ChoiceGroup("click", Choice.MULTIPLE);
choice.append("Another", null);
this.append(inputField);
this.append(choice);
this.addCommand(cmd);
this.setCommandListener(this);
this.setItemStateListener(this);
}
public void commandAction(Command arg0, Displayable arg1)
{
if(arg0 == cmd)
{
String input = inputField.getString();
System.out.println(input);
midlet.getDisplayUI().setInput(input);
midlet.getDisplay().setCurrent(midlet.getDisplayUI());
}
}
public void itemStateChanged(Item arg0)
{
if(arg0 == choice)
{
if(choice.isSelected(0) == true)
{
index = this.append(inputField2);
}
else
{
this.delete(index);
}
}
}
}
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
public class DisplayUI extends Form implements CommandListener
{
private HighLevelMIDlet midlet;
private StringItem displayItem;
private Displayable backUI;
public static final Command backCommand = new Command("Back", Command.BACK,
2);
public DisplayUI(HighLevelMIDlet midlet,Displayable backUI)
{
super("Display");
this.midlet = midlet;
this.backUI = backUI;
init();
this.addCommand(backCommand);
this.setCommandListener(this);
}
private void init()
{
displayItem = new StringItem("you input", null);
this.append(displayItem);
}
public void setInput(String input)
{
displayItem.setText(input);
}
public void commandAction(Command arg0, Displayable arg1)
{
if(arg0 == backCommand)
{
midlet.getDisplay().setCurrent(backUI);
}
}
}
以上是“解析MIDP的高级事件处理机制[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |