📄 qqmidlet.java
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
public class QQMIDlet extends MIDlet implements CommandListener {
private Display display;
private List modeList; //QQ启动模式列表
private ClientForm clientForm; //客户端连接界面
private ServerSocketConnection ssc; //
private Alert errAlert;
private Command cmdSelect = new Command("选择", Command.ITEM, 2);
private Command cmdExit = new Command("退出", Command.EXIT, 1);
private Command cmdBack = new Command("返回", Command.BACK, 3);
public QQMIDlet() {
modeList = new List("移动QQ模式:", Choice.IMPLICIT);
modeList.append("服务器模式", null);
modeList.append("客户端模式", null);
modeList.setSelectCommand(cmdSelect);
modeList.addCommand(cmdExit);
modeList.setCommandListener(this);
}
public void startApp() {
if(display == null) {
display = Display.getDisplay(this);
display.setCurrent(modeList);
}
}
public void pauseApp() {
//
}
public void destroyApp(boolean unconditional) {
//
}
public void commandAction(Command cmd, Displayable d) {
if(cmd == cmdExit) { //退出移动QQ
notifyDestroyed();
}
else if(cmd == cmdSelect) { //选择QQ启动模式
int index = modeList.getSelectedIndex();
switch(index) {
case 0: { //服务器模式
createService(); //创建服务,等等接收客户端连接
break;
}
case 1: { //客户端模式
showClientForm(); //显示地址输入窗口
break;
}
}
}
else if(cmd == cmdBack) { //处理服务等待界面的返回按钮
if(ssc != null) {
try {
ssc.close();
ssc = null;
}
catch(IOException ioe) {
//
}
}
display.setCurrent(modeList);
}
}
//创建服务
private void createService() {
Thread t = new Thread(new Runnable() {
public void run() {
try {
//创建服务器端ServerSocketConnection对象
ssc = (ServerSocketConnection)Connector.open("socket://:2000");
/*
ssc对象调用acceptAndOpen方法监听端口,等待接收客户端的套接字连接,
该方法将阻塞当前线程。当有客户端套接字连接时,acceptAndOpen方法将
返回一个服务器端的套接字连接对象,程序向下执行。
*/
SocketConnection sconn = (SocketConnection)ssc.acceptAndOpen();
ssc = null;
//创建并显示聊天交互界面
QQForm qqForm = new QQForm("服务器端", sconn, QQMIDlet.this);
display.setCurrent(qqForm);
}
catch(IOException ioe) {
System.out.println(ioe.toString());
}
}
});
t.start(); //启动监听线程
//创建并显示监听时的显示界面
Form form = new Form("服务器");
form.append(new StringItem("等待客户端连接", "......"));
form.addCommand(cmdBack);
form.setCommandListener(this);
display.setCurrent(form);
}
//显示客户端模式的显示界面
public void showClientForm() {
if(clientForm == null) {
clientForm = new ClientForm("客户端", this);
}
display.setCurrent(clientForm);
}
//返回到QQ启动模式列表
public void backToModeList() {
display.setCurrent(modeList);
}
public void showError(String msg) {
if(errAlert == null) {
errAlert = new Alert("错误!", "", null, AlertType.ERROR);
errAlert.setTimeout(Alert.FOREVER);
}
errAlert.setString(msg);
display.setCurrent(errAlert);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -