您好,欢迎来到独旅网。
搜索
您的当前位置:首页J2ME实验 高级用户界面编程

J2ME实验 高级用户界面编程

来源:独旅网
J2ME实验 高级用户界面编程

一 实验目的和要求:

了解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;iif(flags[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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务