百度广告
Command对象
在前面我们其实已经使用过Command对象了。J2ME的事件系统比较特殊,你必须首先定义一系列的命令,然后注册到容器对象中,例如(Form、Alert、List、TextBox),再设定命令监听者
package fancy.test;
import javax.microedition.lcdui.*;
{
private Form props;
private Command cancelCommand = new Command("CANCEL", Command.CANCEL, 1);
private Command helpCommand = new Command("HELP", Command.HELP, 1);
private Command okCommand = new Command("OK", Command.OK, 1);
private Command stopCommand = new Command("STOP", Command.STOP, 1);
{
}
{
props.append("Hello World!"n");
props.addCommand(cancelCommand);
props.addCommand(helpCommand);
props.addCommand(okCommand);
props.addCommand(stopCommand);
display.setCurrent(props);
public void showScreen(String cmd)
Form form=new Form("show cmd");
form.addCommand(exitCommand);
display.setCurrent(form);
public void commandAction(Command c, Displayable s)
if (c == exitCommand)
destroyApp(false);
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
}
{
public void pauseApp()
display.setCurrent(null);
}
在上面的程序(CMD.java)中定义了八个命令。如果commandAction()方法接到这八个命令,多半是调用showScreen()方法,将这几个命令输出。showScreen()方法会产生一个新的容器对象(Form),作为当前的屏幕,并把截获的命令显示在屏幕中。
TextBox文本框对象
TextBox是一个容器类型的对象(和Form的性质一样)。用法如下所示:
import javax.microedition.midlet.*;
public class ShowTextBox extends MIDlet implements CommandListener
private Display display;
private Command exitCommand = new Command("Exit", Command.EXIT, 1);
{
}
{
//String str="hello world";
//the follow code is wrong:
txtBox = new TextBox("Text Box",null,200,0);
txtBox.setCommandListener(this);
}
{
{
notifyDestroyed();
}
{
public void pauseApp()
display.setCurrent(null);
}
请注意TextBox类的构造函数,第一个参数实际上是窗口的名称(因为TextBox是一个容器,可能是当前屏幕的显示对象),第二个参数是缺省值,第三个参数是输入字符的总长度。如果你设置了文本框的缺省值,那么第三个参数必须是缺省字符的长度。如果第三个参数的值和缺省字符的长度不一样,那么程序运行不成功(编译可以通过)。如果你将第二个参数置为null值,那么第三个参数可以任意设。
TextField文本域对象
TextField和TextBox有点相似,不过TextBox是多行的,而TextField是单行的。而且TextBox是容器类型的对象,但是TextField是项目类型的对象,只能够被容器包含,不能够单独显示。
package fancy.test;
import javax.microedition.lcdui.*;
{
private Form props;
private Command exitCommand = new Command("Exit", Command.EXIT, 1);
{
}
{
props.append("Hello World!"n");
props.append(txtField);
props.setCommandListener(this);
}
{
{
notifyDestroyed();
}
{
public void pauseApp()
display.setCurrent(null);
}
请注意startApp()方法,我们使用Form对象作为当前屏幕的显示对象,而将TextField对象作为Form的一个子项目显示。下面来介绍TextField类的构造函数,第一个参数是文本域的名称,第二个参数是缺省值,第三个参数是长度,第四个参数是文本域的类型,可选的值有: TextFi
eld. NUMERIC等等。构造好TextField对象之后,调用Form的append()方法将它添加到Form对
DateField对象
DateField对象和TextField对象一样同属于项目类型的对象,不能够单独显示,必须作为容器对象的子项目显示。DateField对象的作用是显示一个日期,它和Windows控制面板中的时间和日期设置程序有点近似。DateField对象的用法如下所示:
import javax.microedition.midlet.*;
点击加载更多评论>>