首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

小弟我编写了一个特别简单的J2me程序,但无法装到手机里,请问呀

2012-03-15 
我编写了一个特别简单的J2me程序,但无法装到手机里,请教呀!我编写了一个可别简单的j2me的程序, 就想放在我

我编写了一个特别简单的J2me程序,但无法装到手机里,请教呀!
我编写了一个可别简单的j2me的程序, 就想放在我的手机里试试,导出了jad文件,在手机中进行安装,在安装的最后提示文件无效,我的手机是n72,大家说说怎么回事呀!



以下是代码,代码在wtk自带的模拟运行正常, 大家说说怎么回事呀!




import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class MessageUI extends MIDlet implements CommandListener ,ItemStateListener {
private Display dis;
/***********************欢迎界面组件**********************************/
private Form welFrm ;
private Command comWelWriteMsg;
private Command comWelExit;
private ImageItem imgIt;
/***********************短息编辑界面组件**********************************/
private Form ediFrm;
private TextField tfMsgEdi;
private Command comTbDel;
private Command comTbBack;
private Command comTbSend;
/***********************短息发送界面组件**********************************/
private Form sendfrm;
private Command comSendBack;
private Command comSendSure;
private TextField tfSend;
private Alert at;


public MessageUI() {
/***********************欢迎界面组件初始化**********************************/
welFrm = new Form("欢迎使用");
Image img = null;
try{
img = Image.createImage("/img5.png");
}catch(Exception e){
e.printStackTrace();
}
imgIt = new ImageItem("欢迎使用短信发送系统",img,Item.LAYOUT_CENTER,"图片未能正确读取");
comWelWriteMsg = new Command("写短信",Command.SCREEN,1);
comWelExit = new Command("返回",Command.EXIT,1);



/***********************短息编辑界面组件初始化**********************************/
ediFrm = new Form("短息编辑界面");
tfMsgEdi = new TextField("请编辑短息内容","",255,TextField.ANY);
//tfMsgEdi.setLayout(Item.LAYOUT_VCENTER );
tfMsgEdi.setPreferredSize(ediFrm.getWidth(), ediFrm.getHeight());
comTbBack = new Command("返回",Command.BACK,1);
comTbDel = new Command("删除",Command.BACK,1);
comTbSend =new Command("发送",Command.SCREEN,1);

/***********************短息发送界面组件初始化**********************************/
sendfrm = new Form("确认发送");
tfSend = new TextField("请输入号码:","",255,TextField.ANY);
comSendBack = new Command("返回",Command.BACK,1);
comSendSure = new Command("确定",Command.SCREEN,1);
at = new Alert("发送成功");




}

protected void startApp() throws MIDletStateChangeException {
dis = Display.getDisplay(this);
/***********************欢迎界面组件组装**********************************/
dis.setCurrent(welFrm);
welFrm.append(imgIt);
welFrm.addCommand(comWelWriteMsg);
welFrm.addCommand(comWelExit);
/***********************短息编辑界面组件组装**********************************/
ediFrm.append(tfMsgEdi);
ediFrm.addCommand(comTbBack);
ediFrm.addCommand(comTbSend);

/***********************短息发送界面组件组装**********************************/
sendfrm.append(tfSend);
sendfrm.addCommand(comSendBack);
sendfrm.addCommand(comSendSure);



/*************************注册监听器****************************************/
welFrm.setCommandListener(this);
ediFrm.setCommandListener(this);

ediFrm.setItemStateListener(this);


sendfrm.setCommandListener(this);


}
public void commandAction(Command c,Displayable d){
if(c==comWelWriteMsg)
{
dis.setCurrent(ediFrm);
}else if(c==comWelExit){
notifyDestroyed();
}else if(c==comTbBack){
dis.setCurrent(welFrm);
}else if(c==comTbSend){
dis.setCurrent(sendfrm);
}else if(c==comTbDel){
int position = tfMsgEdi.getCaretPosition();
tfMsgEdi.delete(position-1, 1);
if(tfMsgEdi.size()==0){
ediFrm.removeCommand(comTbDel);
ediFrm.addCommand(comTbBack);
System.out.println("不等于零");
}
//效果一样不过上面的方法更好一些
/*if(position==1){
ediFrm.removeCommand(comTbDel);
ediFrm.addCommand(comTbBack);
}*/


}else if(c==comSendBack){
dis.setCurrent(ediFrm);
}else if(c==comSendSure){
System.out.println("您输入的电话号码:"+tfSend.getString());
System.out.println("发送的内容为:"+tfMsgEdi.getString());
dis.setCurrent(at, welFrm);
tfMsgEdi.setString("");
tfSend.setString("");

}

}
public void itemStateChanged(Item i){
if(i==tfMsgEdi){
if(tfMsgEdi.size()!=0){
ediFrm.removeCommand(comTbBack);
ediFrm.addCommand(comTbDel);
System.out.println("现在光标:"+tfMsgEdi.getCaretPosition());

}



}

}
protected void pauseApp() {


}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {


}








}


[解决办法]
估计是WTK配置与手机配置不兼容的问题,这个在实机编程中会经常遇到。
这个问题在《J2ME手机高级编程》书中有详细介绍,该书中使用Nokia 5310实机作为验证环境。
[解决办法]
你看看CLDC和MIDP是不是设置错误
[解决办法]
楼上

[解决办法]
恩,在生成包类时候CLDC和MIDP的设置是不是和你的机型不配,再调调看可以不……
[解决办法]
wtk-->settings-->required-->medlet-jar-url 的名字和你jar的名字是否相同?
这种问题多是settings的事
[解决办法]
把程序的目标平台改成 JTWI ,也就是改为 MIDP 2.0 CLDC 1.0,
这样再生成一下试试
[解决办法]
如果你用的是eclipse,很大可能是你在jad里没有设置主midlet类。
[解决办法]

探讨
把程序的目标平台改成 JTWI ,也就是改为 MIDP 2.0 CLDC 1.0,
这样再生成一下试试

[解决办法]
自己做的东西,在手机上的可安装文件是jar,不是jad。

关于jar打包的问题,若楼主用的开发环境是eclipse,必须在jad文件中注意声明MIDlet的主类,否则仍无法运行。建议上网搜索教程使用WTK打包。

没看楼主的代码,发现楼主贴代码都是没有格式化的,看着难受。

热点排行