adminclientreceivethread.java
来自「注:语音聊天部分还未完成」· Java 代码 · 共 177 行
JAVA
177 行
package com.gamvan.club.users.im.admin;import java.awt.Color;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.Socket;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JOptionPane;import javax.swing.JTextField;import com.gamvan.club.users.im.tools.MyTextPane;/** * * @管理员的接收线程 * by 幽梦还乡 from gamvan 2006/4/4 * */public class AdminClientReceiveThread extends Thread { private JComboBox userOnlineList = null; private MyTextPane receiveMeg = null; private JTextField sendMegTextField = null; private JButton sendMeg = null; private Socket clientSocket = null; private ObjectInputStream dataIn = null; private ObjectOutputStream dataOut = null; private ImageIcon icon = null; private MessageNote mn = null; private Color color = null; public boolean isStop; @Override public void run(){ recevThread(); } public void recevThread(){ while(!isStop && !clientSocket.isClosed()){ try{ //读取服务器发送过来的聊天信息 String megType = (String)dataIn.readObject(); if(megType.equalsIgnoreCase("系统信息")){//处理系统信息 String systemMeg = (String)dataIn.readObject(); receiveMeg.append(Color.LIGHT_GRAY,"[系统信息]"); receiveMeg.append(Color.PINK,systemMeg); mn.getMegNote().append(Color.BLACK,"[系统信息]" + systemMeg); //自动下滚 receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength()); }else if(megType.equalsIgnoreCase("服务器关闭")){//处理服务器关闭 dataOut.close(); dataIn.close(); clientSocket.close(); receiveMeg.append(Color.RED,"服务器已经关闭" + "\n"); mn.getMegNote().append(Color.RED,"服务器已经关闭!!!" + "\n"); //自动下滚 receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength()); break; }else if(megType.equalsIgnoreCase("聊天信息")){//处理聊天信息 String userName = (String)dataIn.readObject(); receiveMeg.append(Color.pink,userName); mn.getMegNote().append(Color.pink,userName); String sendAction =(String)dataIn.readObject(); receiveMeg.append(Color.BLACK,sendAction); mn.getMegNote().append(Color.BLACK,sendAction); String to = (String)dataIn.readObject(); receiveMeg.append(Color.BLACK,to); mn.getMegNote().append(Color.BLACK,to); String toSomebody = (String)dataIn.readObject(); receiveMeg.append(Color.BLUE,toSomebody); mn.getMegNote().append(Color.BLUE,toSomebody); String say = (String)dataIn.readObject(); receiveMeg.append(Color.BLACK,say+":"); mn.getMegNote().append(Color.BLACK,say+":"); String date = (String)dataIn.readObject(); receiveMeg.append(Color.LIGHT_GRAY,date+"\n\n"); mn.getMegNote().append(Color.LIGHT_GRAY,date+"\n\n"); String sendStatus = (String)dataIn.readObject(); receiveMeg.append(Color.lightGray,sendStatus); mn.getMegNote().append(Color.lightGray,sendStatus); String message = (String) dataIn.readObject(); color = (Color)dataIn.readObject(); receiveMeg.append(color,message+"\n\n"); mn.getMegNote().append(color,message+"\n\n"); //自动下滚 receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength()); }else if(megType.equalsIgnoreCase("用户列表")){//处理用户列表 int testEnd = 0; String userList = (String)dataIn.readObject(); String userNames[] = userList.split("\n"); userOnlineList.removeAllItems(); userOnlineList.addItem("所有人"); while(testEnd < userNames.length){ userOnlineList.addItem(userNames[testEnd]); testEnd++; } }else if(megType.equalsIgnoreCase("kicked!")){ //踢出管理员!_! String systemMeg = (String)dataIn.readObject(); receiveMeg.append(Color.RED,"[踢人信息]" + systemMeg + "\n"); mn.getMegNote().append(Color.RED,"[踢人信息]" + systemMeg + "\n"); //自动下滚 receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength()); JOptionPane.showMessageDialog(null,"你被踢出了聊天大厅!" + " 发言已经被屏蔽!"+ "如果有问题请与系统最高级管理员联系!!", "系统警告",JOptionPane.WARNING_MESSAGE); //评比不法分子:) new AdminClientReceiveThread().isStop = true; sendMeg.setEnabled(false); sendMegTextField.setEditable(false); }else if(megType.equalsIgnoreCase("下线")){ String leave = (String)dataIn.readObject(); receiveMeg.append(Color.LIGHT_GRAY,leave); mn.getMegNote().append(Color.LIGHT_GRAY,leave); }else if(megType.equalsIgnoreCase("警告")){ String warning = (String)dataIn.readObject(); receiveMeg.append(Color.red,warning); mn.getMegNote().append(Color.red,warning); }else if(megType.equalsIgnoreCase("图片")){ receiveIcon();//接收图片 } }catch(ClassNotFoundException e){ } catch (IOException e) { return; } }} public void sendObject(Socket clientSocket, ObjectOutputStream dataOut,ObjectInputStream dataIn,MyTextPane receiveMeg, JComboBox userOnlineList,JButton sendMeg,MessageNote mn,JTextField sendMegTextField){ this.clientSocket = clientSocket; this.dataOut = dataOut; this.dataIn = dataIn; this.receiveMeg = receiveMeg; this.userOnlineList = userOnlineList; this.sendMeg = sendMeg; this.mn = mn; this.sendMegTextField = sendMegTextField; this.isStop = false; } private void receiveIcon() throws IOException, ClassNotFoundException{ String userName = (String)dataIn.readObject(); icon = (ImageIcon)dataIn.readObject(); receiveMeg.insertIcon(icon); mn.getMegNote().insertIcon(icon); receiveMeg.append(Color.blue,userName); mn.getMegNote().append(Color.blue, userName); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?