J2ME 实验复习指导.docx
- 文档编号:5799780
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:64
- 大小:32.05KB
J2ME 实验复习指导.docx
《J2ME 实验复习指导.docx》由会员分享,可在线阅读,更多相关《J2ME 实验复习指导.docx(64页珍藏版)》请在冰豆网上搜索。
J2ME实验复习指导
J2ME实验复习
1.J2ME高级界面开发技术和高级事件处理机制编写实现模拟手机发短信实例。
packagecom.software.shortmsg;
importjava.io.IOException;
importjavax.microedition.lcdui.Command;
importjavax.microedition.lcdui.CommandListener;
importjavax.microedition.lcdui.Display;
importjavax.microedition.lcdui.Displayable;
importjavax.microedition.lcdui.Form;
importjavax.microedition.lcdui.Image;
importjavax.microedition.lcdui.ImageItem;
importjavax.microedition.lcdui.Item;
importjavax.microedition.lcdui.ItemStateListener;
importjavax.microedition.lcdui.TextField;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
publicclassShortMessageMIDletextendsMIDletimplementsCommandListener,ItemStateListener{
privateDisplaydisplay;
privateFormwelForm;
privateFormeditForm;
privateTextFieldeditTxtField;
privateFormtelForm;
privateTextFieldtelNumTxtField;
privateCommandwriteCmd;
privateCommandexitCmd;
privateCommanddeleteCmd;
privateCommandbackCmd;
privateCommandsendCmd;
privateCommandOKCmd;
publicShortMessageMIDlet(){
display=Display.getDisplay(this);//获取手机屏幕
//欢迎界面
welForm=newForm("欢迎界面");
writeCmd=newCommand("写短信",Command.SCREEN,1);
exitCmd=newCommand("退出",Command.EXIT,1);
//编辑界面
editForm=newForm("编辑界面");
editTxtField=newTextField("短信内容:
","",255,TextField.ANY);
deleteCmd=newCommand("删除",Command.CANCEL,1);
backCmd=newCommand("返回",Command.BACK,1);
sendCmd=newCommand("发送",Command.SCREEN,1);
//发送界面
telForm=newForm("发送界面");
telNumTxtField=newTextField("对方号码:
","",16,TextField.NUMERIC);
OKCmd=newCommand("确定",Command.OK,1);
}
protectedvoidstartApp()throwsMIDletStateChangeException{
display.setCurrent(welForm);
//欢迎界面
welForm.append("欢迎您使用自己开发的短信发送系统!
\n");//在Form上添加汉字
try{
Imageimg=Image.createImage("/logo.png");
ImageItemimgItem=newImageItem("",img,ImageItem.LAYOUT_CENTER,"图片不能显示");
welForm.append(imgItem);
}catch(IOExceptione){
e.printStackTrace();
}
welForm.addCommand(exitCmd);//将按钮添加到界面
welForm.addCommand(writeCmd);
welForm.setCommandListener(this);//注册监听器
//编辑界面
editTxtField.setPreferredSize(editForm.getWidth(),editForm.getHeight());
editForm.append(editTxtField);
editForm.setItemStateListener(this);
editForm.addCommand(backCmd);
editForm.addCommand(sendCmd);
editForm.setCommandListener(this);
//发送界面
telForm.append(telNumTxtField);
telForm.addCommand(OKCmd);
telForm.addCommand(backCmd);
telForm.setCommandListener(this);
}
protectedvoidpauseApp(){
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
}
publicvoiditemStateChanged(Itemitem){
//System.out.println("size:
="+editTxtField.size());
//注意在点击”清除“的时候,其实调用的是commmandAction(),而没有触发这里的事件
if(item==editTxtField){
if(editTxtField.size()==1){
editForm.removeCommand(backCmd);
editForm.addCommand(deleteCmd);
}
}
}
publicvoidcommandAction(Commandc,Displayabled){
if(c==exitCmd){
try{
this.destroyApp(false);
}catch(MIDletStateChangeExceptione){
e.printStackTrace();
}
this.notifyDestroyed();//退出
}elseif(c==writeCmd){
display.setCurrent(editForm);
}elseif(d==editForm&&c==backCmd){
display.setCurrent(welForm);
}elseif(c==deleteCmd){
intcurrPosition=editTxtField.getCaretPosition();//获取光标当前位置
System.out.println("position:
"+currPosition);
if(currPosition>0){
editTxtField.delete(currPosition-1,1);
}
if(currPosition==1){
editForm.removeCommand(deleteCmd);
editForm.addCommand(backCmd);
}
}elseif(c==sendCmd){
display.setCurrent(telForm);
}elseif(d==telForm&&c==backCmd){
display.setCurrent(editForm);
}elseif(c==OKCmd){
telForm.append("短信已发送!
");
Stringcontent=editTxtField.getString();
StringtelNum=telNumTxtField.getString();
System.out.println("短信内容:
"+content);
System.out.println("对方号码:
"+telNum);
}
}
}
2.J2ME低级界面开发技术和低级事件处理机制编写实现小球在界面上的运动功能。
packagecom.software.test;
importjavax.microedition.lcdui.Canvas;
importjavax.microedition.lcdui.Command;
importjavax.microedition.lcdui.CommandListener;
importjavax.microedition.lcdui.Display;
importjavax.microedition.lcdui.Displayable;
importjavax.microedition.lcdui.Graphics;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
publicclassAutoMoveImgDemoextendsMIDletimplementsCommandListener{
privateDisplaydisplay;
privateAutoCanvascanvas;
privateCommandpauseCmd;
privateCommandresumeCmd;
publicAutoMoveImgDemo(){
display=Display.getDisplay(this);
canvas=newAutoCanvas();
pauseCmd=newCommand("暂停",Command.SCREEN,1);
resumeCmd=newCommand("继续",Command.SCREEN,1);
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
}
protectedvoidpauseApp(){
//TODOAuto-generatedmethodstub
}
protectedvoidstartApp()throwsMIDletStateChangeException{
display.setCurrent(canvas);
canvas.addCommand(pauseCmd);
canvas.setCommandListener(this);
Threadt=newThread(canvas);
t.start();
}
publicvoidcommandAction(Commandc,Displayabled){
if(c==pauseCmd){
canvas.pause();
canvas.removeCommand(pauseCmd);
canvas.addCommand(resumeCmd);
}elseif(c==resumeCmd){
canvas.resume();
canvas.removeCommand(resumeCmd);
canvas.addCommand(pauseCmd);
}
}
}
classAutoCanvasextendsCanvasimplementsRunnable{
privateintcurrentX;
privateintcurrentY;
privateintdir;
privateintr;
privatebooleanRUNING;
publicAutoCanvas(){
currentX=40;
currentY=40;
dir=1;
r=40;
RUNING=true;
}
protectedvoidpaint(Graphicsg){
g.setColor(255,255,255);
g.fillRect(0,0,this.getWidth(),this.getHeight());
g.setColor(255,0,0);//设置画笔颜色为红色
//g.drawArc(currentX,currentY,r,r,0,360);
g.fillArc(currentX,currentY,r,r,0,360);//画小球
}
protectedvoidkeyPressed(intkeyCode){
//System.out.println("keyCode:
"+keyCode);
intgameAction=this.getGameAction(keyCode);
if(gameAction==Canvas.LEFT){
currentX--;
}
if(gameAction==Canvas.RIGHT){
currentX++;
}
this.repaint();
}
protectedvoidkeyReleased(intkeyCode){
}
protectedvoidkeyRepeated(intkeyCode){
intgameAction=this.getGameAction(keyCode);
if(gameAction==Canvas.LEFT){
currentX--;
}
if(gameAction==Canvas.RIGHT){
currentX++;
}
this.repaint();
}
publicvoidresume(){
this.RUNING=true;
}
publicvoidpause(){
this.RUNING=false;
}
publicvoidrun(){
while(true){
if(RUNING){
//向上
if(dir==0){
if(currentY<=0){
dir=1;
}else{
currentY--;
//r--;
}
}elseif(dir==1){
if(currentY+r>this.getHeight()){
dir=0;
}else{
currentY++;
//r++;
}
}
this.repaint();
try{
Thread.sleep(50);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
}
}
3.
(1)RMS编程实现记录的增、删、改、查。
packagecom.software.test;
importjava.util.Date;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
importjavax.microedition.rms.InvalidRecordIDException;
importjavax.microedition.rms.RecordStore;
importjavax.microedition.rms.RecordStoreException;
importjavax.microedition.rms.RecordStoreFullException;
importjavax.microedition.rms.RecordStoreNotFoundException;
importjavax.microedition.rms.RecordStoreNotOpenException;
publicclassRecordDemoextendsMIDlet{
publicRecordDemo(){
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
}
protectedvoidpauseApp(){
}
protectedvoidstartApp()throwsMIDletStateChangeException{
RecordStorers=null;
StringrsName="testrs";
//打开
try{
rs=RecordStore.openRecordStore(rsName,true);
}catch(RecordStoreFullExceptione){
e.printStackTrace();
}catch(RecordStoreNotFoundExceptione){
e.printStackTrace();
}catch(RecordStoreExceptione){
e.printStackTrace();
}
////添加数据
//intrecordId=0;
//try{
//Strings="aaaaaaaa";
//byte[]data=s.getBytes();
//recordId=rs.addRecord(data,0,data.length);
//System.out.println("添加的ID:
"+recordId);
//}catch(RecordStoreNotOpenExceptione1){
//e1.printStackTrace();
//}catch(RecordStoreFullExceptione1){
//e1.printStackTrace();
//}catch(RecordStoreExceptione1){
//e1.printStackTrace();
//}
////获取记录内容
//try{
////byte[]data=rs.getRecord(recordId);
//intsize=rs.getRecordSize(recordId);
//System.out.println("size:
"+size);
//byte[]data=newbyte[size];
//intgetSize=rs.getRecord(recordId,data,0);
//System.out.println("getsize:
"+size);
//System.out.println("读取数据:
"+newString(data));
//}catch(RecordStoreNotOpenExceptione1){
//e1.printStackTrace();
//}catch(InvalidRecordIDExceptione1){
//e1.printStackTrace();
//}catch(RecordStoreExceptione1){
//e1.printStackTrace();
//}
////修改
//try{
//intrecordId=18;
////读取原内容
//byte[]data1=rs.getRecord(recordId);
//System.out.println("修改前:
"+newString(data1));
//
//byte[]newData="bbbbb".getBytes();
//rs.setRecord(recordId,newData,0,newData.length);
////读取以验证
//byte[]dat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2ME 实验复习指导 实验 复习 指导