?? clientthread.java
字號:
package qq.client;import java.awt.Color;import java.io.EOFException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import javax.swing.JOptionPane;import javax.swing.JTextPane;import javax.swing.text.BadLocationException;import javax.swing.text.SimpleAttributeSet;import javax.swing.text.StyleConstants;import java.net.*;import java.util.Calendar;import qq.client.panel.UserListPanel;import qq.client.windows.IndividualTalkWindow;import qq.entity.*;public class ClientThread extends Thread{ private ObjectInputStream ois; private ObjectOutputStream oos; private Socket s; private JTextPane receive; private JTextPane record; private JTextPane publicInfo; private UserListPanel userList; private SimpleAttributeSet set; public ClientThread(JTextPane receive, JTextPane record, JTextPane publicInfo, UserListPanel userList) { this.receive = receive; this.record = record; this.publicInfo = publicInfo; this.userList = userList; s=ClientMainClass.socket; ois=ClientMainClass.ois; oos=ClientMainClass.oos; set=new SimpleAttributeSet(); StyleConstants.setFontSize(set, 16); StyleConstants.setFontFamily(set,"宋體"); StyleConstants.setForeground(set, new Color(0,139,139)); } @Override public void run() { while(s.isConnected()){ try { Response res=(Response)ois.readObject(); if(res!=null){ RequestType type=res.getType(); if(type.equals(RequestType.online)){ onlineHandle(res); }else if(type.equals(RequestType.offline)){ offlineHandle(res); }else if(type.equals(RequestType.changeInformation)){ changeInformationHandle(res); }else if(type.equals(RequestType.modifypasswd)){ modifypasswdHandle(res); }else if(type.equals(RequestType.receiveMessage)){ receiveMessageHandle(res); }else if(type.equals(RequestType.individualTalk)){ individualTalkHandle(res); }else if(type.equals(RequestType.receiveFile)){ receiveFileHandle(res); }else if(type.equals(RequestType.publicInfo)){ publicInfoHandle(res); } } } catch (EOFException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } private void modifypasswdHandle(Response res) { if(res.getData()!=null){ JOptionPane.showMessageDialog(null, "密碼修改成功"); }else{ JOptionPane.showMessageDialog(null, "密碼修改失敗\n服務器忙,請稍后再試!"); } } private void changeInformationHandle(Response res) { if(res.getData()!=null){ JOptionPane.showMessageDialog(null, "修改成功"); }else{ JOptionPane.showMessageDialog(null, "服務器忙,請稍后再試!"); } } private void publicInfoHandle(Response res) { String str=(String)res.getData(); publicInfo.setText(str); } private void receiveFileHandle(Response res) { } private void individualTalkHandle(Response res) { Message message=(Message)res.getData(); User user=message.getFrom(); if(!ClientMainClass.individual.containsKey(user.getId())){ int flag=JOptionPane.showConfirmDialog(null,user.getName()+"請求與你私聊,是否接受?","",JOptionPane.YES_NO_OPTION); if(flag==JOptionPane.NO_OPTION){ return; } IndividualTalkWindow indi=new IndividualTalkWindow(user); ClientMainClass.individual.put(user.getId(), indi.getReceivedmessageArea().getTextPane()); indi.showMe(); } JTextPane jtp=ClientMainClass.individual.get(user.getId()); try {//輸出信息發(fā)送人,時間 jtp.getDocument().insertString(jtp.getDocument().getLength(), user.getName()+" "+message.getTime()+"\n", set); } catch (BadLocationException e) { e.printStackTrace(); } //輸出信息 message.analysisMessage(jtp); } private void receiveMessageHandle(Response res) { Message message=(Message)res.getData(); if(ClientMainClass.shield.contains(message.getFrom().getId())){ return; } try {//輸出信息發(fā)送人,時間 receive.getDocument().insertString(receive.getDocument().getLength(), message.getFrom().getName()+" "+message.getTime()+"\n", set); } catch (BadLocationException e) { e.printStackTrace(); } //輸出信息 message.analysisMessage(receive); } private void offlineHandle(Response res) { User user=(User)res.getData(); ClientMainClass.onlineUsers.remove(user); userList.freash(ClientMainClass.onlineUsers); Calendar c = Calendar.getInstance(); String time=c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.DAY_OF_MONTH)+" "+ (c.get(Calendar.HOUR_OF_DAY)+8)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND); try { receive.getDocument().insertString(receive.getDocument().getLength(), user.getName()+" "+time+" 下線\n", set); } catch (BadLocationException e) { e.printStackTrace(); } } private void onlineHandle(Response res) { User user=(User)res.getData(); ClientMainClass.onlineUsers.add(user); userList.freash(ClientMainClass.onlineUsers); Calendar c = Calendar.getInstance(); String time=c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.DAY_OF_MONTH)+" "+ (c.get(Calendar.HOUR_OF_DAY)+8)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND); try { receive.getDocument().insertString(receive.getDocument().getLength(), user.getName()+" "+time+" 上線\n", set); } catch (BadLocationException e) { e.printStackTrace(); } } }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -