利用JML开发的一个小例子,附详细注释。有问题的地方希望大家能帮我提出来,呵呵
/**/
/*
* msntest.java
*
* Created on 2007年4月11日, 下午1:40
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
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;
/** */ /**
* 欢迎装载,但请说明出处
* @author zhappy
*/
public class msntest extends MsnAdapter ... {
private MsnMessenger messenger = null;
private String email = null,password = null;
/** *//** Creates a new instance of msntest */
public msntest() ...{
}
public static void main(String args[])
throws ClassNotFoundException, InstantiationException, IllegalAccessException ...{
msntest msn = (msntest) Class.forName("javamsn.msntest").newInstance();//创建类实例
msn.setEmail("throbot@msn.com");//设置登录用户
msn.setPassword("01234567890");//设置密码
msn.start();
}
//打印信息
private static void msg(Object obj) ...{
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
if (obj instanceof Throwable)
System.err.println("[" + sdf.format(new Date()) + "] " + obj);
else
System.out.println("[" + sdf.format(new Date()) + "] " + obj);
}
private void start() ...{
messenger = MsnMessengerFactory.createMsnMessenger(email,password);//创建MsnMessenger
messenger.setSupportedProtocol(new MsnProtocol[] ...{MsnProtocol.MSNP12});//设置登录协议
messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);//设置用户状态
messenger.addListener(this);//注册事件
messenger.login();//登录
}
//收到正常信息的时候发生
public void instantMessageReceived(MsnSwitchboard switchboard,
MsnInstantMessage message, MsnContact contact) ...{
msg(contact.getDisplayName()+"对我说:"+message.getContent());
//如果聊天内容为exit,退出
if (message.getContent().trim().equalsIgnoreCase("exit")) ...{
msg(contact.getDisplayName()+"对我发出退出指令。");
messenger.logout();
System.exit(0);
}
message.setContent("Hello,I'm robot!");//设置要发送消息内容
message.setFontRGBColor((int)(Math.random() * 255 * 255 * 255));//设置消息的文本颜色
switchboard.sendMessage(message);//发送信息
}
//收到系统信息的时候发生,登录时
public void systemMessageReceived(MsnMessenger messenger,
MsnSystemMessage message) ...{
//msg(messenger + " recv system message " + message);
}
//当在联系人聊天窗口获得光标并按下第一个键时发生
public void controlMessageReceived(MsnSwitchboard switchboard,
MsnControlMessage message, MsnContact contact) ...{
msg(contact.getFriendlyName()+"正在输入文字。");
}
//异常时发生
public void exceptionCaught(MsnMessenger messenger, Throwable throwable) ...{
msg(messenger + throwable.toString());
msg(throwable);
}
//登录完成时发生
public void loginCompleted(MsnMessenger messenger) ...{
msg(messenger.getOwner().getDisplayName()+"登录成功!");
//messenger.getOwner().setDisplayName("天天持之以恒");
}
//注销时发生
public void logout(MsnMessenger messenger) ...{
msg(messenger + " logout");
}
//收到系统广播信息时发生
public void datacastMessageReceived(MsnSwitchboard switchboard,
MsnDatacastMessage message, MsnContact friend) ...{
msg(switchboard + " recv datacast message " + message);
switchboard.sendMessage(message, false);
}
//收到目前不能处理的信息时发生
public void unknownMessageReceived(MsnSwitchboard switchboard,
MsnUnknownMessage message, MsnContact friend) ...{
//msg(switchboard + " recv unknown message " + message);
}
public void contactListInitCompleted(MsnMessenger messenger) ...{
listContacts();
}
/** *//**
* 更新好友列表完成时发生
*/
public void contactListSyncCompleted(MsnMessenger messenger) ...{
listContacts();
}
/** *//**
* 关闭一个聊天窗口时发生
*/
public void switchboardClosed(MsnSwitchboard switchboard) ...{
msg("switchboardStarted " + switchboard);
}
/** *//**
* 打开一个聊天窗口时发生
*/
public void switchboardStarted(MsnSwitchboard switchboard) ...{
msg("switchboardStarted " + switchboard);
}
//打印联系人
private void listContacts() ...{
MsnContact[] cons = messenger.getContactList().getContactsInList(MsnList.AL);
if (cons.length == 0)
msg("空");
else
msg("你现在有"+cons.length+"个联系人");
for (int i = 0; i < cons.length; i++) ...{
String personal = ((MsnContactImpl)cons[i]).getPersonalMessage().equals("")
? "空" : ((MsnContactImpl)cons[i]).getPersonalMessage();
msg(cons[i].getDisplayName() + " " + cons[i].getEmail() + " "
+ cons[i].getStatus() + " " + personal);
}
}
public String getEmail() ...{
return email;
}
public void setEmail(String email) ...{
this.email = email;
}
public String getPassword() ...{
return password;
}
public void setPassword(String password) ...{
this.password = password;
}
}
* msntest.java
*
* Created on 2007年4月11日, 下午1:40
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
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;
/** */ /**
* 欢迎装载,但请说明出处
* @author zhappy
*/
public class msntest extends MsnAdapter ... {
private MsnMessenger messenger = null;
private String email = null,password = null;
/** *//** Creates a new instance of msntest */
public msntest() ...{
}
public static void main(String args[])
throws ClassNotFoundException, InstantiationException, IllegalAccessException ...{
msntest msn = (msntest) Class.forName("javamsn.msntest").newInstance();//创建类实例
msn.setEmail("throbot@msn.com");//设置登录用户
msn.setPassword("01234567890");//设置密码
msn.start();
}
//打印信息
private static void msg(Object obj) ...{
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
if (obj instanceof Throwable)
System.err.println("[" + sdf.format(new Date()) + "] " + obj);
else
System.out.println("[" + sdf.format(new Date()) + "] " + obj);
}
private void start() ...{
messenger = MsnMessengerFactory.createMsnMessenger(email,password);//创建MsnMessenger
messenger.setSupportedProtocol(new MsnProtocol[] ...{MsnProtocol.MSNP12});//设置登录协议
messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);//设置用户状态
messenger.addListener(this);//注册事件
messenger.login();//登录
}
//收到正常信息的时候发生
public void instantMessageReceived(MsnSwitchboard switchboard,
MsnInstantMessage message, MsnContact contact) ...{
msg(contact.getDisplayName()+"对我说:"+message.getContent());
//如果聊天内容为exit,退出
if (message.getContent().trim().equalsIgnoreCase("exit")) ...{
msg(contact.getDisplayName()+"对我发出退出指令。");
messenger.logout();
System.exit(0);
}
message.setContent("Hello,I'm robot!");//设置要发送消息内容
message.setFontRGBColor((int)(Math.random() * 255 * 255 * 255));//设置消息的文本颜色
switchboard.sendMessage(message);//发送信息
}
//收到系统信息的时候发生,登录时
public void systemMessageReceived(MsnMessenger messenger,
MsnSystemMessage message) ...{
//msg(messenger + " recv system message " + message);
}
//当在联系人聊天窗口获得光标并按下第一个键时发生
public void controlMessageReceived(MsnSwitchboard switchboard,
MsnControlMessage message, MsnContact contact) ...{
msg(contact.getFriendlyName()+"正在输入文字。");
}
//异常时发生
public void exceptionCaught(MsnMessenger messenger, Throwable throwable) ...{
msg(messenger + throwable.toString());
msg(throwable);
}
//登录完成时发生
public void loginCompleted(MsnMessenger messenger) ...{
msg(messenger.getOwner().getDisplayName()+"登录成功!");
//messenger.getOwner().setDisplayName("天天持之以恒");
}
//注销时发生
public void logout(MsnMessenger messenger) ...{
msg(messenger + " logout");
}
//收到系统广播信息时发生
public void datacastMessageReceived(MsnSwitchboard switchboard,
MsnDatacastMessage message, MsnContact friend) ...{
msg(switchboard + " recv datacast message " + message);
switchboard.sendMessage(message, false);
}
//收到目前不能处理的信息时发生
public void unknownMessageReceived(MsnSwitchboard switchboard,
MsnUnknownMessage message, MsnContact friend) ...{
//msg(switchboard + " recv unknown message " + message);
}
public void contactListInitCompleted(MsnMessenger messenger) ...{
listContacts();
}
/** *//**
* 更新好友列表完成时发生
*/
public void contactListSyncCompleted(MsnMessenger messenger) ...{
listContacts();
}
/** *//**
* 关闭一个聊天窗口时发生
*/
public void switchboardClosed(MsnSwitchboard switchboard) ...{
msg("switchboardStarted " + switchboard);
}
/** *//**
* 打开一个聊天窗口时发生
*/
public void switchboardStarted(MsnSwitchboard switchboard) ...{
msg("switchboardStarted " + switchboard);
}
//打印联系人
private void listContacts() ...{
MsnContact[] cons = messenger.getContactList().getContactsInList(MsnList.AL);
if (cons.length == 0)
msg("空");
else
msg("你现在有"+cons.length+"个联系人");
for (int i = 0; i < cons.length; i++) ...{
String personal = ((MsnContactImpl)cons[i]).getPersonalMessage().equals("")
? "空" : ((MsnContactImpl)cons[i]).getPersonalMessage();
msg(cons[i].getDisplayName() + " " + cons[i].getEmail() + " "
+ cons[i].getStatus() + " " + personal);
}
}
public String getEmail() ...{
return email;
}
public void setEmail(String email) ...{
this.email = email;
}
public String getPassword() ...{
return password;
}
public void setPassword(String password) ...{
this.password = password;
}
}