import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.SystemColor;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.border.Border;
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)
朱moyimi
- 粉丝: 79
- 资源: 1万+
最新资源
- 《面向对象与桌面应用程序设计》大作业.7z
- GEMM优化代码实现2
- 人体人员检测46-YOLO(v5至v9)、COCO、Darknet、TFRecord数据集合集.rar
- 矩阵与线程的对应关系图
- 清华大学2022年秋季学期 高等数值分析课程报告
- GEE错误集-Cannot add an object of type <Element> to the map. Might be fixable with an explicit .pdf
- 清华大学2022年秋季学期 高等数值分析课程报告
- HBU大学语文结课论文-三国研究
- 人和箱子检测2-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 私人整理HBU面向对象程序设计选填知识点
- HBU四大名捕之首lws思政课程大题答案整理
- 人物检测26-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- HBU思政常考知识点总结
- 和美乡村城乡融合发展数字化解决方案.docx
- 智慧龙湖天街数字化解决方案.docx
- 和美乡村城乡融合发展数字化解决方案.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈