您的位置:首页 > 理论基础 > 计算机网络

Java课程设计【网络聊天】-发送表情

2009-03-10 17:10 218 查看
在大一聊天的课程设计中,遇到一个问题~~~~~发送图片表情的问题

下面单介绍发送表情

表情是存储在客户端本地的(每个客户端都有,你要用QQ的到QQ安装目录下找)
所以发送表情的思想:
用户点击【表情】--- 跳出对话框---点击一个表情---在输入框里加入标识符我用的是#号+两位数字
点【发送】---在接收端解析-----到本地寻找相应的表情---加载插入

大前提:在java中JTextArea不支持图片-----只能用JTextPane 而且JTextPane没有append()方法,只有getText(),setText()方法(setText()每次都盖掉以前的)
要实现insertString()必须注意实现几行代码(即相当于append()添加而不是覆盖),下列用AAAAA标记出

首先,我在 D:/abcd/表情中加入了18个表情 #01 --- #18 格式gif 注意:一定统一位数,以防识别错误

JTextPane MsgArea=new JTextPane();//将接收显示区域设置为JTextPane

接受端的处理
mywords = inputField.getText();//将接受到的数据转换为String
manageInfo( mywords);//调用此方法处理String,分别解析出文字表情
manageInfo("/n");//刷上分行

//处理接受到的信息的方法,加参String 通过此方解析表情文字
//有时间就分析下咯,没时间的话注意几行~~~~我用AAAAAA标记出了
public void manageInfo(String info)
{
int length=info.length();//获取String 长度
char[] every=new char[length];
int count=0;//初始字符的位置,变化
String path="D://abcd//表情 //";

//实现insertString()的必要前提
Document doc = MsgArea.getStyledDocument();//AAAAA 后面insertStirn 用到doc,insertIcon用到MsgArea
SimpleAttributeSet attr=new SimpleAttributeSet();//AAAAA

Boolean hadjin=false;

for(int i=0;i
{
every[i]=info.charAt(i);
if(every[i]=='#') //识别信息中是否有#号
hadjin=true;
}
//开始玩拆字游戏

for(int i=0;i
{
if(hadjin=false)
break;
if(every[i]=='#')
{
String str=null;
str=info.substring(count,i); //得到表情前的文字

try{
if(str!=null)
doc.insertString(doc.getLength(), str, attr);//AAAA添加表情前的文字
}catch(Exception e){
System.out.println("a big error here");
}

String icName;
icName=info.substring(i, i+3); //得到表情的名字 #01

Icon ic=new ImageIcon(path+icName+".gif");//将表情转化为icon
MsgArea.setCaretPosition(doc.getLength());

//获取当前的位置,将表情插入到当前最下~~~~

//没有此表情将出现在JTextPane的最上方,无法出现在当前行

MsgArea.insertIcon(ic); //加入表情

count=i+3;//将字符起始位置跳到表情后第一位置
}
}

if(count
{
String theLast=null;
theLast=info.substring(count, length);
try{

doc.insertString(doc.getLength(), theLast, attr);
}catch(Exception e){
System.out.println("a big error here");
}
}
}

效果:用的是梦幻的表情~~~呵呵





PS:1.貌似解析信息的时候有个很好的方法split

没用过,有空补上

2.发送多行就一行一行发,然后一行一行处理

我晕,当时交的时候太简陋了,刚及格【有点郁闷】,好歹是自个花了两礼拜写的

这礼拜重新写了个,在增加功能,发文件,语音什么的~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: