利用JML开发的一个小例子,附详细注释。有问题的地方希望大家能帮我提出来,呵呵
/**/
/*
*msntest.java
*
*Createdon2007年4月11日,下午1:40
*
*Tochangethistemplate,chooseTools|TemplateManager
*andopenthetemplateintheeditor.
*/

package
javamsn;

import
java.text.SimpleDateFormat;
import
java.util.Date;
import
net.sf.jml.MsnContact;
import
net.sf.jml.MsnList;
import
net.sf.jml.MsnMessenger;
import
net.sf.jml.MsnProtocol;
import
net.sf.jml.MsnSwitchboard;
import
net.sf.jml.MsnUserStatus;
import
net.sf.jml.event.MsnAdapter;
import
net.sf.jml.impl.MsnContactImpl;
import
net.sf.jml.impl.MsnMessengerFactory;
import
net.sf.jml.message.MsnControlMessage;
import
net.sf.jml.message.MsnDatacastMessage;
import
net.sf.jml.message.MsnInstantMessage;
import
net.sf.jml.message.MsnSystemMessage;
import
net.sf.jml.message.MsnUnknownMessage;


/***/
/**
*欢迎装载,但请说明出处
*@authorzhappy
*/

public
class
msntest
extends
MsnAdapter
...
{
privateMsnMessengermessenger=null;
privateStringemail=null,password=null;


/***//**Createsanewinstanceofmsntest*/

publicmsntest()...{
}

publicstaticvoidmain(Stringargs[])

throwsClassNotFoundException,InstantiationException,IllegalAccessException...{
msntestmsn=(msntest)Class.forName("javamsn.msntest").newInstance();//创建类实例
msn.setEmail("throbot@msn.com");//设置登录用户
msn.setPassword("01234567890");//设置密码
msn.start();
}

//打印信息

privatestaticvoidmsg(Objectobj)...{
SimpleDateFormatsdf=newSimpleDateFormat("MM-ddHH:mm");
if(objinstanceofThrowable)
System.err.println("["+sdf.format(newDate())+"]"+obj);
else
System.out.println("["+sdf.format(newDate())+"]"+obj);
}


privatevoidstart()...{
messenger=MsnMessengerFactory.createMsnMessenger(email,password);//创建MsnMessenger

messenger.setSupportedProtocol(newMsnProtocol[]...{MsnProtocol.MSNP12});//设置登录协议
messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);//设置用户状态
messenger.addListener(this);//注册事件
messenger.login();//登录
}

//收到正常信息的时候发生
publicvoidinstantMessageReceived(MsnSwitchboardswitchboard,

MsnInstantMessagemessage,MsnContactcontact)...{
msg(contact.getDisplayName()+"对我说:"+message.getContent());
//如果聊天内容为exit,退出

if(message.getContent().trim().equalsIgnoreCase("exit"))...{
msg(contact.getDisplayName()+"对我发出退出指令。");
messenger.logout();
System.exit(0);
}
message.setContent("Hello,I'mrobot!");//设置要发送消息内容
message.setFontRGBColor((int)(Math.random()*255*255*255));//设置消息的文本颜色
switchboard.sendMessage(message);//发送信息
}

//收到系统信息的时候发生,登录时
publicvoidsystemMessageReceived(MsnMessengermessenger,

MsnSystemMessagemessage)...{
//msg(messenger+"recvsystemmessage"+message);
}

//当在联系人聊天窗口获得光标并按下第一个键时发生
publicvoidcontrolMessageReceived(MsnSwitchboardswitchboard,

MsnControlMessagemessage,MsnContactcontact)...{
msg(contact.getFriendlyName()+"正在输入文字。");
}

//异常时发生

publicvoidexceptionCaught(MsnMessengermessenger,Throwablethrowable)...{
msg(messenger+throwable.toString());
msg(throwable);
}

//登录完成时发生

publicvoidloginCompleted(MsnMessengermessenger)...{
msg(messenger.getOwner().getDisplayName()+"登录成功!");
//messenger.getOwner().setDisplayName("天天持之以恒");
}

//注销时发生

publicvoidlogout(MsnMessengermessenger)...{
msg(messenger+"logout");
}

//收到系统广播信息时发生
publicvoiddatacastMessageReceived(MsnSwitchboardswitchboard,

MsnDatacastMessagemessage,MsnContactfriend)...{
msg(switchboard+"recvdatacastmessage"+message);
switchboard.sendMessage(message,false);
}

//收到目前不能处理的信息时发生
publicvoidunknownMessageReceived(MsnSwitchboardswitchboard,

MsnUnknownMessagemessage,MsnContactfriend)...{
//msg(switchboard+"recvunknownmessage"+message);
}


publicvoidcontactListInitCompleted(MsnMessengermessenger)...{
listContacts();
}


/***//**
*更新好友列表完成时发生
*/

publicvoidcontactListSyncCompleted(MsnMessengermessenger)...{
listContacts();
}


/***//**
*关闭一个聊天窗口时发生
*/

publicvoidswitchboardClosed(MsnSwitchboardswitchboard)...{
msg("switchboardStarted"+switchboard);
}


/***//**
*打开一个聊天窗口时发生
*/

publicvoidswitchboardStarted(MsnSwitchboardswitchboard)...{
msg("switchboardStarted"+switchboard);
}

//打印联系人

privatevoidlistContacts()...{
MsnContact[]cons=messenger.getContactList().getContactsInList(MsnList.AL);
if(cons.length==0)
msg("空");
else
msg("你现在有"+cons.length+"个联系人");

for(inti=0;i<cons.length;i++)...{
Stringpersonal=((MsnContactImpl)cons[i]).getPersonalMessage().equals("")
?"空":((MsnContactImpl)cons[i]).getPersonalMessage();
msg(cons[i].getDisplayName()+""+cons[i].getEmail()+""
+cons[i].getStatus()+""+personal);
}
}


publicStringgetEmail()...{
returnemail;
}


publicvoidsetEmail(Stringemail)...{
this.email=email;
}


publicStringgetPassword()...{
returnpassword;
}


publicvoidsetPassword(Stringpassword)...{
this.password=password;
}

}