📄 clientreceivethread.java
字号:
package com.gamvan.club.users.im.guest;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.JComboBox;import javax.swing.JOptionPane;import javax.swing.JTextField;import com.gamvan.club.users.im.tools.MyTextPane;public class ClientReceiveThread extends Thread { /** * 此类用来接受服务器端发来的消息 * 过客 */ private JComboBox userOnlineList; private MyTextPane textPaneUp; private Socket clientSocket; private ObjectInputStream receiveMeg; private ObjectOutputStream sendMeg; private JTextField sendText; private Color color; private ImageIcon icon; public boolean isStop = false; public ClientReceiveThread(Socket clientSocket, ObjectOutputStream sendMeg, ObjectInputStream receiveMeg, MyTextPane textPaneUp,JComboBox userOnlineList,JTextField sendText){ this.clientSocket = clientSocket; this.userOnlineList = userOnlineList; this.sendMeg = sendMeg; this.textPaneUp = textPaneUp; this.receiveMeg = receiveMeg; this.sendText = sendText; } @Override public void run(){ recevThread(); } public void recevThread(){ //若套接字没有关闭,则一直执行循环体 while(!isStop&&!clientSocket.isClosed()){ try{ //读取服务器发送的聊天信息 String megType = (String) receiveMeg.readObject(); if(megType.equalsIgnoreCase("系统信息")){//处理系统信息 String systemMeg = (String)receiveMeg.readObject(); textPaneUp.append(Color.PINK,"[系统信息]" + systemMeg); }else if(megType.equalsIgnoreCase("服务器关闭")){//处理服务器关闭信息 sendMeg.close(); receiveMeg.close(); clientSocket.close(); textPaneUp.append(Color.RED,"股务器已经关闭!!!!!" + "\n"); break; }else if(megType.equalsIgnoreCase("聊天信息")){//接受聊天信 String userName = (String)receiveMeg.readObject(); textPaneUp.append(Color.pink,userName); String sendAction =(String)receiveMeg.readObject(); textPaneUp.append(Color.BLACK,sendAction); String to = (String)receiveMeg.readObject(); textPaneUp.append(Color.BLACK,to); String toSomebody = (String)receiveMeg.readObject(); textPaneUp.append(Color.BLUE,toSomebody); String say = (String)receiveMeg.readObject(); textPaneUp.append(Color.BLACK,say+":"); String date = (String)receiveMeg.readObject(); textPaneUp.append(Color.LIGHT_GRAY,date+"\n\n"); String sendStatus = (String)receiveMeg.readObject(); textPaneUp.append(Color.lightGray,sendStatus); String message = (String) receiveMeg.readObject(); //聊天信息颜色 color = (Color)receiveMeg.readObject(); textPaneUp.append(color,message+"\n\n"); }else if(megType.equalsIgnoreCase("用户列表")){//接受用户列表 String userList = (String)receiveMeg.readObject(); //分析列表内容,并将更新界面用户列表组合框 String userNames[] = userList.split("\n"); userOnlineList.removeAllItems(); int testEnd = 0; userOnlineList.addItem("所有人"); while(testEnd < userNames.length){ userOnlineList.addItem(userNames[testEnd]); testEnd++; } }else if(megType.equalsIgnoreCase("kicked!")){ String systemMeg = (String)receiveMeg.readObject(); textPaneUp.append(Color.RED,"[踢人信息]" + systemMeg + "\n"); JOptionPane.showMessageDialog(null,"你被踢出了聊天大厅!" + "如果有问题请与系统管理员联系!!", "系统警告",JOptionPane.WARNING_MESSAGE); sendText.setEditable(false); }else if(megType.equalsIgnoreCase("下线")){ String leave = (String)receiveMeg.readObject(); textPaneUp.append(Color.LIGHT_GRAY,leave); }else if(megType.equalsIgnoreCase("警告")){ String warning = (String)receiveMeg.readObject(); textPaneUp.append(Color.red,warning); }else if(megType.equalsIgnoreCase("图片")){ receiveIcon();//接收图片 } userOnlineList.setSelectedIndex(0);//设置选中默认项 }catch(Exception e){ return; } }//end while } private void receiveIcon() throws IOException, ClassNotFoundException{ String userName = (String)receiveMeg.readObject(); icon = (ImageIcon)receiveMeg.readObject(); textPaneUp.insertIcon(icon); textPaneUp.append(Color.blue,userName); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -