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

📄 find.java

📁 实现简单聊天功能
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.Vector;
import java.net.*;
import java.io.*; 

public class Find 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 Find(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
}

⌨️ 快捷键说明

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