|
|
作者:未知 文章来源:nec
制作应用程序
现在我们来制作应用程序吧!这次制作的是简单计算应用程序。按以下工作流程进行。
1. 决定应用的方法
2. 制作各个画面
3. 制作画面的迁移
4. 实现应用的逻辑
♦ 3-1 简易计算应用程序的制作
首先进入主题画面,按[start]后,就会出现应用程序的说明。随后按下[Done],就进入主画面了,在主画面中,有输入界面、显示计算结果部分、演算表格部分等。在进行计算时,首先要在输入界面输入数值,再用[operator]命令转换到运算符选择画面。选择运算符后再返回到主画面,之后再继续在输入界面中输入数值。用[operator]命令转换到运算符选择画面,选择[=]后,就会出现?算?果。
以下是简单的画面指示图。
图:计算应用程序的画面顺序。
♦ 3-2 制作应用程序的大框架
MIDP应用程序必须要继承MIDlet。执行命令时也要实现javax.microedition.lcdui.CommandListener。
下面的方法必须被覆盖:
• startApp()
• pauseApp()
• destroyApp(boolean unconditional)
• commandAction(Command command , Displayable displayable)
♦ 3-3 制作画面
♦ 3-3-1 主题画面
在主题画面中,用Form显示一个简单的主题画面。首先,用titleForm定义一个对象变量。 private Form titleForm;
为了要在Form上出现画像,要创建Image的对象。用Image.createImage方法。其次,创建ImageItem对象。可用下面的构造函数创建:
ImageItem imgItem = new ImageItem(“”,img,ImageItem.LAYOUT_CENTER,””)。
用append方法去指定图片在表单中的位置。应用程序的创建步骤按如下。
//制作主题画面
titleForm = new Form("N800 Calculator");
titleForm.setCommandListener(this);
//指定画像位置
try {
Image img = Image.createImage("/title.png");
ImageItem imgItem = new ImageItem("", img, ImageItem.LAYOUT_CENTER, "")
titleForm.append(imgItem);
} catch (Exception e) {
}
其次,指定要用的命令。对于对象变量,分别定义START命令、QUIT命令以及EXIT命令。
private Command start = new Command("START", Command.OK, 1);
private Command exit = new Command("EXIT", Command.EXIT, 1);
当命令被指定时,用addCommand方法去添加:
//指定命令
titleForm.addCommand(start);
titleForm.addCommand(exit);
♦ 3-3-2 应用程序画面的说明
用Alert创建应用程序画面的说明。
//应用程序的说明画面
alert = new Alert("", "This is N800 Calculator.Please input number and select operator.", null, AlertType.INFO);
♦ 3-3-3 主画面
在主画面中,用StringItem表示计算的结果和运算符。以及输入数值的TextField。 TextField为输入数值框,数字输入的限制用TextField.NUMERIC。
//创建主画面
main = new Form("N800 Calculator");
main.setCommandListener(this);
//设置命令
main.addCommand(exit);
main.addCommand(operatorChoice);
//设置计算结果显示部分
StringItem answerStr = new StringItem(" ", ""); //计算结果
main.append(answerStr);
//设置运算符显示部分
StringItem operatorStr = new StringItem(" ", "");
main.append(operatorStr);
//设置输入界面
TextField input = new TextField("input", "0", 8, TextField.NUMERIC);
main.append(input);
♦ 3-3-4 操作符选择画面
用List实现操作符的选择。
OperatorList =new List("Operator List",List.IMPLICIT,operatorStrings,null);
operatorList.setCommandListener(this);
♦ 3-3-5 应用程序开机画面
画面制作完成后,实际演示后却什么都没有。这是由于并没有指定应用程序开始时的画面。按照以下记述,用startApp()方法中的display.setCurrent方法指定应用程序的开始画面。
/**
*应用程序开始时的处理
*/
public void startApp() throws MIDletStateChangeException {
//能表示主题画面
display.setCurrent(titleForm);
}
♦ 3-4 命令处理和待机迁移
即使出现主题画面,也不能设定后面的画面转换,所以只能出现主题画面。在命令处理部分设定画面迁移。所有命令的处理过程在commandAction方法中都被定义。
♦ 3-4-1 从说明主题画面进入应用程序画面
在说明主题画面中按[start]时,用setCurrent方法向下面的应用程序画面转换。画面转换,由于要用Alert在应用程序说明画面上进行实际安装,所以与其他情况下的画面转换略有不同。因此,出现Alert之后,要将他迁移到主画面,成为display.setCurrent(alert, main)。
if (displayable == titleForm) {
if (command == start) {
display.setCurrent(alert, main);
}
}
♦ 3-4-2 从应用程序的说明画面进入主画面
从应用程序的说明画面进入主画面,用setCurrent方法显示应用程序的说明画面时,将下面的迁移设定为主画面,没有必要再另外设定。
♦ 3-4-3 从主画面进入运算符选择画面
要从主画面选择运算符,用[Operate]命令进入运算符选择画面。用display.setCurrent方法设定。
if (displayable == main) {
if (command == operatorChoice) {
display.setCurrent(operatorList);
}
}
♦ 3-4-4 从运算符画面进入主画面
选择运算符后就开始计算,必须在主画面显示运算结果。在List object中选择要素时,静止的Command SELECT_COMMAND 会动,而且能产生命令事件。所以,得到List命令时,下面记述的就是List.SELECT_COMMAND命令。
if (displayable == operatorList && command == List.SELECT_COMMAND) {
//向主画面迁移
display.setCurrent(main);
}
这样,就完成了画面的迁移。
♦ 3-5 计算处理
计算处理是应用程序所必须的。首先,使用选择的运算符,表示和计算输入后的数值。应用程序作为事例变数,有tmp和operator。Tmp保持计算后得出的结果,operator保持选择的演算符。用 ShowAnswer方法表示实际的计算和计算结果。使用Form和get 方法可以获得StringItem和TextField, Form中附加的序号是从0开始,用get方法指定该号码能够获得Item。
/**
* 表示计算结果 。
*/
public void showAnswer() {
//获得StringItem,TextField
StringItem answerStr = (StringItem) main.get(0);
TextField tf = (TextField) main.get(2);
int num = Integer.parseInt(tf.getString()); //获得输入的值
//计算
switch (operator) {
case 0 ://加法
tmp = tmp + num;
break;
case 1 : //减法
tmp = tmp - num;
break;
case 2 ://乘法
tmp = tmp * num;
break;
case 3 ://除法
tmp = tmp / num;
break;
default : //选择"="时
tmp = num; //照原样输入值
break;
}
//表示计算结果
answerStr.setText(String.valueOf(tmp));
//刚开始输入TextField
tf.setString("0");
}
♦ 3-6 运算符的选择
当选择演算符的时候就执行运算。把选择的演算符,必须保存在operator变量中。我们将在以下if语句中实现上面的操作。
if (displayable == operatorList && command == List.SELECT_COMMAND) {
//获得StringItem
StringItem si = (StringItem) main.get(1);
switch (operatorList.getSelectedIndex()) {
case 0 :
showAnswer();
si.setText("+");
operator = 0;
break;
case 1 :
showAnswer();
si.setText("-");
operator = 1;
break;
case 2 :
showAnswer();
si.setText("*");
operator = 2;
break;
case 3 :
showAnswer();
si.setText("/");
operator = 3;
break;
case 4 :
showAnswer();
si.setText("");
tmp = 0;
break;
default :
break;
}
//向主画面迁移
display.setCurrent(main);
}
♦ 3-7 实际操作
下面运行一下这个简易的计算应用程序。
1.主题画面 2.应用程序的说明
3.主画面 4.选择演算符
5.表示计算结果
|
|