⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smsmidlet.java

📁 J2ME程序设计实例教程的源码
💻 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 + -