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

📄 whiteboardthread.java

📁 一个基于swing的网络白板
💻 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 + -