📄 friend.java
字号:
//Friend.java
/**
@author Joedan hongguangming@sohu.com
*/
import myevent.*;
import java.net.*;
class Friend//好友
{
Friend(String _id, String _name)//传入用户ID和用户名
{
id = _id;
name = _name;
}
public boolean 是否在线()
{
return online;
}
public void 添加好友消息发送代理(好友消息发送代理 _发送者)
{
发送者 = _发送者;
}
public void 上线(String ip, String port, 好友消息发送代理 _发送者)
{
/*
// 如果在线,退出
if (online)
return;
*/
// 发送者 = _发送者;
发送者 = _发送者;
// 构造wnd
wnd = new ChatFrame();
wnd.添加会话动作监视器(new 会话处理类());
// 构造add
add = new InetSocketAddress(ip, Integer.parseInt(port));
// online = true
online = true;
}
public void 显示聊天界面()
{
if (!online) return;
wnd.显示();
}
public void 下线()
{
online = false;
}
public void 添加新消息(String msg)
{
if (!online) return;
// 将msg加入newMsg
newMsg += msg + "\n";
// 如果“聊天窗口”可见,将newMsg添加到“聊天窗口”中,并将newMsg清空
if (!wnd.是否在听())
return;
wnd.听(newMsg);
newMsg = "";
}
public void 设置用户ID(String _id)
{
id = _id;
}
public String 读取用户ID()
{
return id;
}
public void 设置用户名(String _name)
{
name = _name;
}
public String 读取用户名()
{
return name;
}
public String 读取聊天记录()
{
// 返回旧消息加新消息的内容
return oldMsg + newMsg;
}
/******************private***************************/
private class 会话处理类 implements 会话动作监视器//该类用来做为会话界面的“会话动作监视器”
{
public void 会话说处理(String msg)//处理如何将说的内容让对方听到
{
// 如果“发送者”存在,就把消息发送出去
if (发送者 != null)
发送者.好友消息发送(add, name + "对我说:\n" + msg);
}
public void 会话见面处理()//见面时有什么事情要做
{
// 如果已经有什么话想对我说,那就赶快说吧
if (newMsg.equals(""))
return;
wnd.听(newMsg);
newMsg = "";
}
public void 会话告别处理()//告别时有什么事情要做
{
// 把我们的这次谈话保存好,以后才可以保存
oldMsg += wnd.获得谈话内容() + "\n";
}
}
private 好友消息发送代理 发送者;
private String id;//用户ID
private String name;//用户名
private boolean online = false;//在线标志
private String newMsg = "";//新消息
private String oldMsg = "";//看过的消息
private 会话界面 wnd;//与该好友关联的聊天窗体
private SocketAddress add;//该好友的地址
public static void main(String args[])
{
Friend friend = new Friend("4137759", "Joedan");
friend.上线("127.0.0.1", "5959", new 好友消息发送代理()
{
public void 好友消息发送(SocketAddress add, String msg)
{
System.out.println(add.toString() + " " + msg);
}
}
);
friend.显示聊天界面();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -