与使用 KJava HelloWorld
应用程序一样,这个 MIDlet
也会在 MIDP 设备的显示屏上显示 "Hello World!" 和 Exit 按钮,按下该按钮会终止应用程序。
HelloWorld.java
文件以下面的代码行开始,这些代码行导入稍后会在 HelloWorld
类中使用的类:
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
由于 HelloWorld
类是一个 MIDP
应用程序,它扩展了 MIDlet。它也实现
CommandListener
接口来处理事件:
public class HelloWorld extends MIDlet implements CommandListener
下面的方法是一个缺省构造程序,它创建一个新表单,在上面初始化控件,然后显示出来:
private Form form;
public HelloWorld()
{
// Create a new form on which to display our text
form = new Form("Test App");
// Add the text "Hello World!" to the form
form.append("Hello World!");
// Add a command button labeled "Exit"
form.addCommand( new Command( "Exit", Command.EXIT, 1 ) );
// Register this object as a commandListener
form.setCommandListener( this );
}
调用 startApp()
方法启动应用程序与小应用程序的启动方法很象。在 MIDle 的一次执行中它可能会被调用多次。如果 MIDlet 暂停,pauseApp()
将会被调用。要重新启动 MIDlet,需调用 startApp()
。仅须执行一次的主初始化代码应该放置在构造程序中:
public void startApp()
{
// Get a reference to the display, and show the form
Display display = Display.getDisplay(this);
display.setCurrent( form );
}
pauseApp()
被调用使得 MIDlet 处于暂停状态。在此应用程序中,当进入暂停状态时,我们没执行任何操作;但是我们仍然需要在 MIDlet 中实现 pauseApp
方法,因为它是父 MIDlet 类中的抽象方法。
public void pauseApp() { }
destroyApp()
被调用,破坏了 MIDlet 并使其处于销毁状态。在此应用程序中,我们通过将引用设为 null
,释放了对表单的引用。
public void destroyApp(boolean unconditional)
{
form = null;
}
commandAction()
方法是事件处理程序,被请求实现 CommandListener
接口。目前,它破坏了应用程序并通知应用程序管理软件 MIDlet 已经完成。
public void commandAction(Command c, Displayable d)
{
// Destroy this MIDlet
destroyApp(true);
// Notify the application management software that this MIDlet
// has entered the destroyed state
notifyDestroyed();
}