📄 whiteboardthread.java
字号:
package mywb;
import java.io.*;
import java.net.*;
public class WhiteBoardThread extends Thread{
public Socket socket;
protected ObjectInputStream inputStream;
protected ObjectOutputStream outputStream;
public WhiteBoardPanel whiteBoard;
public WhiteBoardThread(Socket wbsocket,WhiteBoardPanel whiteBoard){
try {
socket = wbsocket;
this.whiteBoard = whiteBoard;
inputStream = new ObjectInputStream(new BufferedInputStream(
wbsocket.getInputStream()));
LoginMessage loginMsg = (LoginMessage) inputStream.readObject();
WhiteBoardPanel.elements = loginMsg.getList();
WhiteBoardPanel.ranLineVector = loginMsg.getRlines();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void run () {
try {
readMessage();
} catch (Exception ex) {
ex.printStackTrace ();
} finally {
try {
socket.close ();
} catch (IOException ignored) {
}
}
}
void readMessage () throws IOException, ClassNotFoundException {
while (true) {
//读取消息对象
Object message = inputStream.readObject();
if (message instanceof IMessage) {
message = (IMessage) message;
if (message instanceof ServerAddObjMessage) {
Object id = ((ServerAddObjMessage) message).getID();
Object element = ((ServerAddObjMessage) message)
.getElement();
WhiteBoardPanel.elements.addElementWithID(id, element);
whiteBoard.repaint();
} else if (message instanceof ServerReplacedMessage) {
synchronized (WhiteBoardPanel.elements) {
Object oldID = ((ServerReplacedMessage) message)
.getOldID();
Object id = ((ServerReplacedMessage) message).getID();
Object element = ((ServerReplacedMessage) message)
.getObject();
boolean success = WhiteBoardPanel.elements
.replaceOjbWithID(oldID, id, element);
System.out.println("replace " + success);
whiteBoard.repaint();
}
} else {
System.err.println("未知消息: " + message);
}
} else if (message instanceof ClientAddRanLineMsg) {
WhiteBoardPanel.ranLineVector
.addElement(((ClientAddRanLineMsg) message).getLine());
whiteBoard.repaint();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -