📄 smsmidlet.java
字号:
package tom.jiafei;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.wireless.messaging.MessageListener;
import javax.wireless.messaging.MessageConnection;
import java.io.IOException;
/**
* 该类是应用程序的主类。实现了MessageListener接口,用于监视无线消息连接。
*/
public class SMSMIDlet extends MIDlet implements CommandListener, MessageListener {
private MessageConnection msgConn;
private SenderForm sender; //短消息发送器
private Receiver receiver; //短消息接收器
private Inbox inbox; //收件箱
private Display display;
private List mainMenu;
private Command cmdExit = new Command("退出", Command.EXIT, 1);
private Command cmdSelect = new Command("选择", Command.ITEM, 2);
private Command cmdRead = new Command("查看", Command.SCREEN, 3);
private Command cmdBack = new Command("返回", Command.BACK, 2);
private Alert errAlert = null;
private Alert messageAlert = null;
private Displayable backDisplayable = null;
public SMSMIDlet() {
inbox = new Inbox(this);
receiver = new Receiver(this, inbox);
String port = this.getAppProperty("message-port");
sender = new SenderForm(this, port);
//创建主菜单
mainMenu = new List("短消息", Choice.IMPLICIT, new String[]{"发送短消息", "收件箱"}, null);
mainMenu.setSelectCommand(cmdSelect);
mainMenu.addCommand(cmdExit);
mainMenu.setCommandListener(this);
}
public void startApp() {
display = Display.getDisplay(this);
display.setCurrent(mainMenu);
try {//打开一个消息连接,用于接收消息
String port = this.getAppProperty("message-port");
msgConn = receiver.openConnection(port);
msgConn.setMessageListener(this);
}
catch(IOException ioe) {
showError(ioe.toString());
}
}
public void pauseApp() {
msgConn = null;
receiver.release(); //关闭连接
}
public void destroyApp(boolean undicational) {
msgConn = null;
receiver.release(); //关闭连接
}
//处理用户界面命令
public void commandAction(Command cmd, Displayable displayable) {
if(cmd == cmdExit) {
destroyApp(false);
notifyDestroyed();
}
else if(cmd == cmdSelect) {
int index = mainMenu.getSelectedIndex();
if(mainMenu.getString(index).equals("发送短消息")) {
sender.showUI();
}
else if(mainMenu.getString(index).equals("收件箱")) {
inbox.showUI(display.getCurrent());
}
}
else if(cmd == cmdBack) {
display.setCurrent(backDisplayable);
}
else if(cmd == cmdRead) {
inbox.showUI(backDisplayable);
}
}
//显示错误信息
public void showError(String errMsg) {
if(errAlert == null) {
Image img = null;
try {
img = Image.createImage("/error.png");
}
catch(IOException ioe) {
//
}
errAlert = new Alert("错误", errMsg, img, AlertType.ERROR);
errAlert.setTimeout(2000);
}
Displayable d = display.getCurrent();
errAlert.setString(errMsg);
display.setCurrent(errAlert, d);
}
//通知用户收件箱接收到一条短信息
public void notifyUser() {
if(messageAlert == null) {
Image img = null;
try {
img = Image.createImage("/message.png");
}
catch(IOException ioe) {
//
}
messageAlert = new Alert("信息", "收到一条短信息!", img, AlertType.INFO);
messageAlert.setTimeout(Alert.FOREVER);
messageAlert.addCommand(cmdBack);
messageAlert.addCommand(cmdRead);
messageAlert.setCommandListener(this);
}
if(display.getCurrent() != inbox) {
backDisplayable = display.getCurrent();
}
display.setCurrent(messageAlert);
}
//消息监听器回调方法,当有消息到来时,监听连接的监听器回调该方法。
public void notifyIncomingMessage(MessageConnection conn) {
if(conn == msgConn) {
receiver.handleMessage();
}
}
//返回主菜单
public void backToMainMenu() {
display.setCurrent(mainMenu);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -