import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.Vector;
import java.net.*;
import java.io.*;
class FindFriend2 extends JFrame {//查找好友类
JLabel jLabel1 = new JLabel();
JButton find2 = new JButton();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JList list2;
///////////////////以下是好友的呢称,性别等信息
Vector nickname=new Vector();
Vector sex=new Vector();
Vector place=new Vector();
Vector jicq=new Vector();
Vector ip=new Vector();
Vector pic=new Vector();
Vector status=new Vector();
Vector emails=new Vector();
Vector infos=new Vector();
//以下临时保存好友的呢称,性别等信息
Vector tmpjicq=new Vector();//jicqid
Vector tmpname=new Vector();//jicqname
Vector tmpip=new Vector();//ip
Vector tmppic=new Vector();//pic info
Vector tmpstatus=new Vector();//status
Vector tmpemail=new Vector();
Vector tmpinfo=new Vector();
//以下创建网络相关变量
Socket socket;
BufferedReader in;
PrintWriter out;
int myid;
String serverhost;
int servport;
DatagramPacket sendPacket;
DatagramSocket sendSocket;
int sendPort=5000;
//////////////////
JPopupMenu findmenu = new JPopupMenu();
JMenuItem look = new JMenuItem();
JMenuItem add = new JMenuItem();
public FindFriend2(int whoami,String host,int port) {//查找好友类构造函数
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
serverhost=host;
servport=port;
myid=whoami;
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}//以下与服务器连接
try{socket=new Socket(InetAddress.getByName(serverhost),servport);
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),true);
sendSocket=new DatagramSocket();
}catch(IOException e1){}
}
private void jbInit() throws Exception {//以下是程序界面
jLabel1.setText("下面是在线的朋友");
jLabel1.setBounds(new Rectangle(11, 11, 211, 18));
this.getContentPane().setLayout(new FlowLayout());
find2.setText("查找");
find2.setBounds(new Rectangle(8, 289, 79, 29));
find2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
find2_mouseClicked(e);
}
});
jButton1.setText("next");
jButton1.setBounds(new Rectangle(110, 288, 79, 29));
jButton2.setText("up");
jButton2.setBounds(new Rectangle(211, 285, 79, 29));
jButton3.setText("cancel");
jButton3.setBounds(new Rectangle(317, 289, 79, 29));
// nickname=new Vector();
// sex=new Vector();
// place=new Vector();
ListModel model=new FindListModel(nickname,sex,place);//列表模型
ListCellRenderer renderer=new FindListCellRenderer();
list2=new JList(model);
list2.setSize(200,200);
list2.setBackground(new Color(255, 255, 210));
list2.setAlignmentX((float) 1.0);
list2.setAlignmentY((float) 1.0);
list2.setCellRenderer(renderer);
list2.setVisibleRowCount(7);
list2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
list2_mousePressed(e);
}
});
look.setText("查看资料");
add.setText("加为好友");
add.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
add_mousePressed(e);
}
});
this.getContentPane().add(jLabel1, null);
this.getContentPane().add(new JScrollPane(list2));
this.getContentPane().add(find2, null);
this.getContentPane().add(jButton1, null);
this.getContentPane().add(jButton2, null);
this.getContentPane().add(jButton3, null);
findmenu.add(look);
findmenu.add(add);
}//以下是关闭本窗口
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
//this.dispose();
this.hide();
}
}
//以下向服务器发送查找好友请求
void find2_mouseClicked(MouseEvent e) {
out.println("find");
DefaultListModel mm=(DefaultListModel)list2.getModel();
/////////////////find friend info
try{
String s=" ";
//从服务器读取好友信息
do{ s=in.readLine();
if(s.equals("over")) break;
nickname.add(s);
sex.add(in.readLine());
place.add(in.readLine());
ip.add(in.readLine());
emails.add(in.readLine());
infos.add(in.readLine());
}while(!s.equals("over"));
/////////////end find info
//read their jicqno
int theirjicq,picinfo,sta;
for(int x=0;x<nickname.size();x++){
theirjicq=Integer.parseInt(in.readLine());
//System.out.println(theirjicq);
jicq.add(new Integer(theirjicq));
picinfo=Integer.parseInt(in.readLine());
pic.add(new Integer(picinfo));
sta=Integer.parseInt(in.readLine());
//System.out.println(sta);
status.add(new Integer(sta));
//System.out.println(jicq.get(x));
}
//在列表中显示
for(int i=0;i<nickname.size();i++){
mm.addElement(new Object[]{nickname.get(i),sex.get(i),place.get(i)});
}//for
}catch(IOException e4){System.out.println("false");}
}
//显示查找好友菜单
void list2_mousePressed(MouseEvent e) {
findmenu.show(this,e.getX()+20,e.getY()+50);
}
/////////////add frined
//以下将添加的好友存储在临时矢量
void add_mousePressed(MouseEvent e) {
//add friend to database
int dd;
dd=list2.getSelectedIndex();
tmpjicq.add(jicq.get(dd));
tmpname.add(nickname.get(dd));
tmpip.add(ip.get(dd));
tmppic.add(pic.get(dd));
tmpstatus.add(status.get(dd));
tmpemail.add(emails.get(dd));
tmpinfo.add(infos.get(dd));
//以下向服务器发送添加好友请求
out.println("addfriend");
out.println(jicq.get(dd));
out.println(myid);
try{ //以下告诉客户将其加为好友
String whoips;
String s="oneaddyou"+myid;
s.trim();
System.out.println(s);
byte[] data=s.getBytes();
whoips=ip.get(dd).toString().trim();
sendPacket=new
DatagramPacket(data,s.length(),InetAddress.getByName(whoips),sendPort);
sendSocket.send(sendPacket);
} catch(IOException e2){e2.printStackTrace();}
//}catch(IOException df){};
}
/////////////add friend end
}
//以下扩展DefaultListModel类建立列表
class FindListModel extends DefaultListModel
{ public FindListModel(Vector nickname,Vector sex,Vector place)
{ for(int i=0;i<nickname.size();++i){
addElement(new Object[]{nickname.get(i),sex.get(i),place.get(i)});
}
}
public String getName(Object object)
{ Object[] array=(Object[])object;
return(String) array[0];
}
public String getSex(Object object)
{ Object[] array=(Object[]) object;
return (String) array[1];
}
public String getPlace(Object object)
{ Object[] array=(Object[])object;
return (String) array[2];
}
}
class FindListCellRenderer extends JLabel implements ListCellRenderer//以下是处理列表渲染
{ private Border lineBorder=BorderFactory.createLineBorder(Color.red,2),
emptyBorder =BorderFactory.createEmptyBorder(2,2,2,2);
public FindListCellRenderer(){
setOpaque(true);
}
public Component getListCellRendererComponent(JList list,Object value,int index,
boolean isSelected,boolean cellHasFocus)
{ FindListModel model=(FindListModel) list.getModel();
setText(model.getName(value)+" "+model.getSex(value)+" "+model.getPlace(value));
if(isSelected){setForeground(list.getSelectionForeground());
setBackground(list.getSelectionBackground());
}
else { setForeground(list.getForeground());
setBackground(list.getBackground());}
if(cellHasFocus) setBorder(lineBorder)
没有合适的资源?快使用搜索试试~ 我知道了~
聊天系统(java+applet).zip
共23个文件
jpg:15个
java:4个
ds_store:3个
需积分: 5 0 下载量 120 浏览量
2024-05-14
21:54:04
上传
评论
收藏 826KB ZIP 举报
温馨提示
聊天系统(java+applet)
资源推荐
资源详情
资源评论
收起资源包目录
聊天系统(java+applet).zip (23个子文件)
聊天系统(java+applet)
.DS_Store 6KB
javicq
.DS_Store 6KB
基于JAVA的ICQ系统的设计于实现
.DS_Store 6KB
pic
main.jpg 73KB
s2.jpg 47KB
login.jpg 73KB
new.jpg 75KB
mo.jpg 68KB
g.jpg 66KB
get.jpg 67KB
sql.jpg 97KB
add.jpg 71KB
server.jpg 83KB
find.jpg 72KB
direct.jpg 60KB
3.jpg 93KB
ok.jpg 77KB
send.jpg 68KB
src
compli.bat 49B
src
New.java 5KB
Register.java 7KB
Server.java 15KB
MainWin.java 41KB
共 23 条
- 1
资源评论
趙兴晨
- 粉丝: 1250
- 资源: 219
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功