⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findfriend2.java

📁 可以支持很多人在线聊天
💻 JAVA
字号:
package talk3;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 concel = new JButton();JList list2;boolean chazhao=true;///////////////////以下是好友的呢称,性别等信息Vector nickname=new Vector();Vector icqno=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();//jicqidVector tmpname=new Vector();//jicqnameVector tmpip=new Vector();//ipVector tmppic=new Vector();//pic infoVector tmpstatus=new Vector();//statusVector tmpemail=new Vector();Vector tmpinfo=new Vector();//以下创建网络相关变量Socket socket;BufferedReader in;PrintWriter out;long myid;String serverhost;int servport;DatagramPacket sendPacket;DatagramSocket sendSocket;//////////////////JPopupMenu findmenu = new JPopupMenu();JMenuItem look = new JMenuItem();JMenuItem add = new JMenuItem();public FindFriend2(long 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.setFont(new java.awt.Font("新細明體", 0, 11));jLabel1.setForeground(Color.red);jLabel1.setText("下面是在线的朋友:");this.getContentPane().setLayout(new FlowLayout());find2.setText("查找");find2.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(MouseEvent e) {find2_mouseClicked(e);}});setSize(new Dimension(200, 150));this.setState(Frame.NORMAL);this.setTitle("查找窗口");setResizable(false);concel.setText("cancel");concel.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(MouseEvent e) {jButton3_mouseClicked(e);}});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.setBorder(BorderFactory.createEtchedBorder());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().setBackground(UIManager.getColor("InternalFrame.inactiveTitleGradient"));this.setForeground(Color.black);this.getContentPane().add(jLabel1, null);this.getContentPane().add(new JScrollPane(list2));this.getContentPane().add(find2, null);this.getContentPane().add(concel, null);findmenu.add(look);findmenu.add(add);}protected void processWindowEvent(WindowEvent e) {super.processWindowEvent(e);if (e.getID() == WindowEvent.WINDOW_CLOSING) {this.hide();}}//---->void find2_mouseClicked(MouseEvent e) {if(chazhao==true){chazhao=false;out.println("find");DefaultListModel mm=(DefaultListModel)list2.getModel();try{String s=" ";do{s=in.readLine();if(s.equals("over")) break;icqno.add(s ) ;nickname.add(in.readLine());sex.add(in.readLine());place.add(in.readLine());ip.add(in.readLine());emails.add(in.readLine());infos.add(in.readLine());}while(!s.equals("over"));int theirjicq,picinfo,sta;for(int x=0;x<nickname.size();x++){theirjicq=Integer.parseInt(in.readLine());jicq.add(new Integer(theirjicq));picinfo=Integer.parseInt(in.readLine());pic.add(new Integer(picinfo));sta=Integer.parseInt(in.readLine());status.add(new Integer(sta));}for(int i=0;i<nickname.size();i++){mm.addElement(new Object[]{icqno.get(i),nickname.get(i),ip.get(i)}); }}catch(IOException e4){System.out.println("false");}}}//<----查找结束;void list2_mousePressed(MouseEvent e) {findmenu.show(this,120,150);}//---->void add_mousePressed(MouseEvent e) {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(ip.get(dd) ) ;out.println(myid);try{String whoips;String  s="oneaddyou"+myid;s.trim();byte[] data=s.getBytes();whoips= ip.get(dd).toString().trim();sendPacket=new DatagramPacket(data,s.length(),InetAddress.getByName(whoips),4040);///////////////////4System.out.println(InetAddress.getByName(whoips));sendSocket.send(sendPacket);this.dispose() ;}catch(IOException e2){e2.printStackTrace();}}// <----添加好友。//以下扩展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); else setBorder(emptyBorder); return this; }}void jButton3_mouseClicked(MouseEvent e) { this.dispose() ;}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -