![]() |
| //ChatServer.java ………… while(true) { Socket socket = serversocket.accept(); ChatCommunication chat = new ChatCommunication(socket); } ......... //ChatCommunication.java .......... ChatCommuncation(Socket socket) { personalsocket = sokcet; dout = new Dataoutputstream(personalsocket.getoutoutstream()); ..... } |
| //Ex: ........... for(int i =0; i < messagearraylist.size();i++) { PaintMessageToMessageCanvas((MessageObject)messagearraylist.get(i); }......... /************************************************************** 下面函数用来绘制图像和文本消息 **************************************************************/ private void PaintMessageIntoCanvas(MessageObject messageObject) { int m_YPos = messageobject.StartY - YOffset; int m_XPos = 5 - XOffset; int CustomWidth = 0; String Message = messageobject.Message; /*************以用户名字体打印出用户名 **************/ if(Message.indexOf(":") >= 0) { graphics.setFont(UserNameFont); chatclient.getGraphics().setFont(UserNameFont); fontmetrics = chatclient.getGraphics().getFontMetrics(); String m_UserName = Message.substring(0,Message.indexOf(":")+1); graphics.drawString(m_UserName,m_XPos+CustomWidth,m_YPos); CustomWidth+=fontmetrics.stringWidth(m_UserName)+HorizantalSpace; Message = Message.substring(Message.indexOf(":")+1); } /*********设置文本的字体**********/ chatclient.getGraphics().setFont(TextFont); graphics.setFont(TextFont); fontmetrics = chatclient.getGraphics().getFontMetrics(); /**********打印图像区域********/ if(messageobject.IsImage == true) { tokenizer = new StringTokenizer(Message," "); while(tokenizer.hasMoreTokens()) { TokenString = tokenizer.nextToken(); if(TokenString.indexOf("~~") >= 0) { /********如果是正确的图像*************/ try { int m_ImageIndex = Integer.parseInt(TokenString.substring(2)); if((m_ImageIndex >= 0) && (m_ImageIndex < chatclient.IconCount)) { graphics.drawImage(chatclient.IconArray[m_ImageIndex] ,m_XPos+CustomWidth,m_YPos - 15,messageobject.Width,messageobject.Height,this); CustomWidth+=messageobject.Width+HorizantalSpace; } } catch(Exception _Exc) { } } else { graphics.drawString(TokenString,m_XPos+CustomWidth,m_YPos); CustomWidth+=fontmetrics.stringWidth(TokenString)+HorizantalSpace; } if(TotalWidth < m_XPos+CustomWidth) { TotalWidth = m_XPos+CustomWidth; scrollview.setValues(TotalWidth,TotalHeight); } ................. } |