一 实验目的和要求:
了解MIDP用户界面特征;掌握MIDP用户界面管理机制及实现;理解MIDP用户界面Command及事件驱动机制;掌握高级屏幕类及其子类;掌握屏幕表单(Form类)及其组件与事件驱动机制,进一步了解MIDPv2.0的工作原理与组成结构。
二 实验设备及材料:
计算机,安装计算机,安装JDK ;J2ME Wireless Tookit;Eclipse,EclipseME 三 实验内容
1. 创建一个MIDlet工程,编写一个MIDlet类,利用Display实现在手机屏幕上显示“Hello”;
2. 练习Command(命令按钮)、TextBox(文本框)和Alert(报警)、List(列表)的使用
3. 练习Form类及其组件的使用,以及组件事件的驱动 4. 编写手机短信发送项目
四 实验代码及运行结果。(请附上关键代码)
1. 创建一个MIDlet工程,编写一个MIDlet类,利用Display实现在手机屏幕上显示“Hello”;
public class Q1 extends MIDlet {
private Form frm = new Form(\"请您选择相应操作\");
private Display dis; public Q1() {
}
protected void destroyApp(boolean arg0) throws
frm.append(\"Hello\");
MIDletStateChangeException {} protected void pauseApp() {}
protected void startApp() throws MIDletStateChangeException { }
}
dis = Display.getDisplay(this); dis.setCurrent(frm);
2. 练习Command(命令按钮)、TextBox(文本框)和Alert(报警)、List(列表)的使用。
1) 编程实现如下界面1,练习Command类的创建、添加到Display以及事
件驱动。
public class Q21 extends MIDlet { private Display dis; private Form frm; private Command cmdOk; private Command cmdItem; private Command cmdScreen; private Command cmdHelp; private Command cmdHelp1; private Command cmdBack; private Command cmdExit; private Command cmdCancel;
public Q21() { }
frm = new Form(\"请您选择相应操作\");
cmdOk = new Command(\"OK\",Command.OK,1); cmdItem = new Command(\"Item\",Command.ITEM,1); cmdScreen = new Command(\"Screen\",Command.SCREEN,1); cmdHelp = new Command(\"Help\",Command.HELP,2); cmdHelp1 = new Command(\"Help1\",Command.HELP,1); cmdBack = new Command(\"Back\",Command.BACK,1); cmdExit = new Command(\"Exit\",Command.EXIT,1); cmdCancel = new Command(\"Cancel\",Command.CANCEL,1);
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {} protected void pauseApp() {}
protected void startApp() throws MIDletStateChangeException { }
}
dis = Display.getDisplay(this); dis.setCurrent(frm); frm.addCommand(cmdBack); frm.addCommand(cmdItem); frm.addCommand(cmdScreen); frm.addCommand(cmdHelp); frm.addCommand(cmdHelp1); frm.addCommand(cmdExit); frm.addCommand(cmdCancel); frm.addCommand(cmdOk);
2) 编程实现如下界面2,练习List类的创建、插入删除修改操作、不同类型List的事件驱动机制。
public class Q22Exclusive extends MIDlet {
private Display dis;
private Command cmd = new Command(\"确定\",Command.SCREEN,1);; public Q22Exclusive() {}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {} protected void pauseApp() {}
protected void startApp() throws MIDletStateChangeException { }
}
dis = Display.getDisplay(this);
List list = new List(\"请您选择相应操作\" ,Choice.EXCLUSIVE); list.addCommand(cmd);
list.append(\"删除该号码\", null); list.append(\"向该号码发送短信\", null); list.append(\"编辑该号码\", null);
list.append(\"将该号码设置为好友\", null); dis.setCurrent(list);
3) 编程实现如下界面3,练习TextBox类的创建、操作、按钮的添加,事件的绑定。
public class Q23 extends MIDlet implements CommandListener{
private Display dis; private TextBox tb; private Command cmd1; private Command cmd2; private Command cmd3; private Command cmd4; private Command cmd5;
public Q23() { }
protected void destroyApp(boolean arg0) throws protected void pauseApp() {} protected void startApp() throws
dis = Display.getDisplay(this); tb.addCommand(cmd1); tb.addCommand(cmd2); tb.addCommand(cmd3);
tb = new TextBox(\"请您输入短信\",\"\",255,TextField.ANY); cmd1 = new Command(\"获得光标位置\",Command.SCREEN,1); cmd2 = new Command(\"获取文本\",Command.SCREEN,2); cmd3 = new Command(\"插入文本\",Command.SCREEN,3); cmd4 = new Command(\"替换文本\",Command.SCREEN,4); cmd5 = new Command(\"删除文本\",Command.BACK,1);
MIDletStateChangeException {}
MIDletStateChangeException {
}
tb.addCommand(cmd4); tb.addCommand(cmd5);
tb.setCommandListener(this);
dis.setCurrent(tb);
public void commandAction(Command c, Displayable d) { if(c==cmd1){
System.out.println(\"获得光标的位置\"+tb.getCaretPosition());
}
}
}
}
if(c==cmd4){ }
if(c==cmd5){ }
int pos = tb.getCaretPosition(); tb.delete(pos-1, 1); tb.setString(\"Songdan\"); if(c==cmd2){ }
if(c==cmd3){
tb.insert(\"abcdefg\", 2);
System.out.println(tb.getString());
4) 编程实现如下界面4,练习Alert类的创建。
public class Q24 extends MIDlet implements CommandListener{
private Display dis;
private Command cmd1 = new Command(\"否\",Command.BACK,1);
private Command cmd2 = new Command(\"是\",Command.SCREEN,1); private Command cmd3 = new Command(\"删除文本\",Command.SCREEN,1); private Alert alert = null;
private TextBox txb = new TextBox(\"请您输入短信\",\"\",255,TextField.ANY); public Q24() {
alert = new Alert(\"提示\",\"编辑短信,是否进行\",null,AlertType.INFO);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
protected void pauseApp() { }
dis = Display.getDisplay(this); alert.addCommand(cmd1); alert.addCommand(cmd2);
protected void startApp() throws MIDletStateChangeException {
}
}
alert.setCommandListener(this); txb.setCommandListener(this); dis.setCurrent(alert);
public void commandAction(Command c, Displayable d) { }
if(c==cmd1){ }
if(c==cmd2){ }
if(c==cmd3){ }
int position = txb.getCaretPosition(); txb.delete(position-1, 1); txb.addCommand(cmd3); dis.setCurrent(txb); this.notifyDestroyed();
界面1
界面2
界面3 界面4
3. 练习Form类及其组件(ChoiceGroup、TextField、DateField、Gauge、ImageItem、StringItem)的使用,以及组件事件的驱动。编程实现界面5,点击“确定”,输出所选内容。编程实现界面6、界面7、界面8。
界面5
public class Q31 extends MIDlet implements CommandListener{ private Display dis; private Form frm; private Command cmd; private ChoiceGroup cg1; private ChoiceGroup cg2; private ChoiceGroup cg3;
public Q31() {
frm = new Form(\"这是一个含有ChoiceGroup的Form\"); cmd = new Command(\"确定\",Command.SCREEN,1);
cg1 = new ChoiceGroup(\"选择性别(单选)\",ChoiceGroup.EXCLUSIVE); cg1.append(\"男\", null); cg1.append(\"女\", null);
cg2 = new ChoiceGroup(\"选择性别(菜单)\",ChoiceGroup.POPUP); cg2.append(\"男\", null); cg2.append(\"女\", null);
cg3 = new ChoiceGroup(\"选择爱好(多选)\",ChoiceGroup.MULTIPLE); cg3.append(\"打球\", null); cg3.append(\"唱歌\", null); frm.setCommandListener(this);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {} protected void pauseApp() { }
protected void startApp() throws MIDletStateChangeException {
dis = Display.getDisplay(this); frm.addCommand(cmd);
}
}
frm.append(cg1); frm.append(cg2); frm.append(cg3); dis.setCurrent(frm);
public void commandAction(Command c, Displayable d) {
System.out.println(cg1.getString(cg1.getSelectedIndex())); System.out.println(cg2.getString(cg2.getSelectedIndex())); } }
}
int size = cg3.size();
boolean flags[] = new boolean[size]; cg3.getSelectedFlags(flags); for(int i=0;i System.out.println(cg3.getString(i)); if(c==cmd){ 界面6 public class Q32 extends MIDlet implements ItemCommandListener{ private Display dis; private Form frm; private Command cmd; private TextField tf1; private TextField tf2; public Q32() { } protected void destroyApp(boolean arg0) throws protected void pauseApp() {} protected void startApp() throws MIDletStateChangeException { dis = Display.getDisplay(this); frm.append(tf1); frm.append(tf2); dis.setCurrent(frm); frm = new Form(\"这是一个注册表单\"); cmd = new Command(\"清除内容\",Command.ITEM,1); tf1 = new TextField(\"输入账号\",\"\",30,TextField.NUMERIC); tf2 = new TextField(\"输入密码\",\"\",30,TextField.PASSWORD); tf1.setItemCommandListener(this); tf2.setItemCommandListener(this); MIDletStateChangeException {} } tf1.addCommand(cmd); tf2.addCommand(cmd); public void commandAction(Command c, Item i) { } } } TextField tf = (TextField)i; int pos = tf.getCaretPosition(); tf.delete(pos-1, 1); if(c==cmd){ 界面5 界面6 4. 编写手机短信发送项目 1) 欢迎界面:右下按钮:写短信,左下按钮:退出程序。 2) 短信编辑界面:选择“写短信”按钮,进入短信编辑界面,界面上有一个文本框供输入短信,框内有字时,左下方显示“清除文本”,否则显示“返回上一界面”。右下方显示“发送”按钮 3) 发送界面:按“发送”,出现一个界面,界面上有一个文本框供输入对方手机号,左下方显示“返回”,右下方显示“确定”,按“确定“后,短信发出,在控制台上显示。 public class Q4 extends MIDlet implements CommandListener,ItemStateListener{ private Display dis; private Form frm; private ImageItem welcomeItem; private Command cmdExit; private Command cmdOk; private Form frmWrit; private TextField tf; private TextBox tbSend; private Command cmdDel; private Command cmdSend; private Command cmdBack; private Command cmdSendBack; private Command cmdSendOk; public Q4() { frm = new Form(\"欢迎界面\"); Image img = null; try{ img = Image.createImage(\"/img.png\"); }catch(Exception ex){ ex.printStackTrace(); } welcomeItem = new ImageItem(\"欢迎您的到来\ cmdExit = new Command(\"退出程序\ cmdOk = new Command(\"写短信\ cmdDel = new Command(\"清除文本\ cmdSend = new Command(\"发送\ cmdBack = new Command(\"返回上一界面\ frmWrit = new Form(\"请您输入短信\"); tf = new TextField(\"\ tbSend = new TextBox(\"请您输入对方号码\ cmdSendOk = new Command(\"确定\ cmdSendBack = new Command(\"返回\ } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { dis = Display.getDisplay(this); dis.setCurrent(frm); frm.append(welcomeItem); frm.addCommand(cmdExit); frm.addCommand(cmdOk); frm.setCommandListener(this); frmWrit.append(tf); frmWrit.addCommand(cmdSend); frmWrit.addCommand(cmdBack); frmWrit.setCommandListener(this); tbSend.addCommand(cmdSendBack); tbSend.addCommand(cmdSendOk); tbSend.setCommandListener(this); frmWrit.setItemStateListener(this); } public void commandAction(Command c, Displayable d) { if(c==cmdExit){ this.notifyDestroyed(); } if(c==cmdOk){ dis.setCurrent(frmWrit); } if(c==cmdBack){ dis.setCurrent(frm); } } } if(c==cmdDel){ } } int pos = tf.getCaretPosition(); tf.delete(pos-1, 1); if(tf.size() ==0){ frmWrit.removeCommand(cmdDel); } frmWrit.addCommand(cmdBack); if(c==cmdSend){ dis.setCurrent(tbSend); if(c==cmdSendOk){ System.out.println(\"短信成功发出\"); System.out.println(\"短信内容:\"+tf.getString()); System.out.println(\"短信发送目的地\"+tbSend.getString()); } if(c==cmdSendBack){ dis.setCurrent(frmWrit); } public void itemStateChanged(Item i) { if(i==tf){ if(tf.size()!=0){ frmWrit.removeCommand(cmdBack); } } } } frmWrit.addCommand(cmdDel); 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dcrkj.com 版权所有 赣ICP备2024042791号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务