📄 qqform.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
/**
* 聊天交互界面,为用户提供了发送消息,接收显示消息的功能。
*/
public class QQForm extends Form implements CommandListener, Runnable {
//
private QQMIDlet midlet;
private SocketConnection sconn; //套接字连接
private DataOutputStream dos; //
private DataInputStream dis; //
private StringItem siReceive;
private TextField tfSender;
private boolean stop = false;
private Thread receiveThread;
private Command cmdOK = new Command("发送", Command.OK, 1);
private Command cmdCancel = new Command("断开", Command.CANCEL, 2);
private Command cmdBack = new Command("返回", Command.BACK, 1);
public QQForm(String title, SocketConnection sconn, QQMIDlet midlet) {
super(title);
this.sconn = sconn;
this.midlet = midlet;
try {
dos = sconn.openDataOutputStream();
dis = sconn.openDataInputStream();
siReceive = new StringItem(sconn.getAddress() + "说:\n", "");
tfSender = new TextField("请输入消息:", "", 200, TextField.ANY);
}
catch(IOException ioe) {
midlet.showError(ioe.toString());
}
tfSender.setPreferredSize(getWidth(), 150);
append(siReceive);
append(new Spacer(this.getWidth(), 10));
append(tfSender);
addCommand(cmdOK);
addCommand(cmdCancel);
setCommandListener(this);
//创建并启动接收信息线程
receiveThread = new Thread(this);
receiveThread.start();
}
//
public void commandAction(Command cmd, Displayable d) {
if(cmd == cmdOK) { //发送信息
//创建并启动发送信息线程。
Thread t = new Thread(new Runnable() {
public void run() { //发送消息线程
try {
dos.writeUTF(tfSender.getString());
}
catch(IOException ioe) {
handleCut();
}
}
});
t.start();
}
else if(cmd == cmdCancel){
stop = true;
try {
sconn.close(); //关闭连接
dis.close();
dos.close();
}
catch(IOException ioe) {
//
}
midlet.backToModeList();
}
else if(cmd == cmdBack) {
midlet.backToModeList();
}
}
//消息接收线程
public void run() {
String s = "";
while(!stop) {
try {
//如果套接字连接通道中没有数据,该方法将阻塞当前线程。
s = dis.readUTF(); //
siReceive.setText(s);
}
catch(IOException ioe) {
handleCut();
stop = true;
}
}
}
//处理断开
private void handleCut() {
siReceive.setText("再见!!!");
tfSender.setConstraints(TextField. UNEDITABLE);
removeCommand(cmdOK);
removeCommand(cmdCancel);
addCommand(cmdBack);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -