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

📄 mainwin.java

📁 基于JAVA的ICQ系统的设计于实现 内容: 一.序言 二.设计 三.程序界面 四.程序的使用 参考资料 关于作者
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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);
                else setBorder(emptyBorder);
          return this;
          }
          }
//以下是主程序
public class MainWin extends JFrame implements Runnable{
  JPanel contentPane;
///////////////////////////friendinfo
//以下是好友基本信息变量,比如呢称,ip地址等
 Vector friendnames=new Vector();
int friendnum;//friend number
   private String [] picsonline=new String []{
      "1.jpg","3.jpg","5.jpg","7.jpg"};
  private String [] picsoffline=new String[]{
   "2.jpg","4.jpg", "6.jpg","8.jpg"};
  Vector friendjicq=new Vector();
  Vector udpport=new Vector();
  Vector friendips=new Vector();
  Vector friendemail=new Vector();
  Vector friendinfo=new Vector();
  Vector picno=new Vector();
  Vector status=new Vector();
 // Vector pic=new Vector();
//以下是临时变量保存临时的好友
  Vector tempname=new Vector();
  Vector tempjicq=new Vector();
  Vector tempip=new Vector();
  Vector temppic=new Vector();
  Vector tempstatus=new Vector();
  Vector whoaddmesip=new Vector();//get whoaddme as friend
  Vector tempemail=new Vector();
  Vector tempinfo=new Vector();
   int index;//get list index
   int index3;//get firiend onlineinfo
   int index4;//get message from info
   boolean fromunknow=false;
//以下建立窗口类
FindFriend2 findf;
JDialog hello=new JDialog();
JDialog OneAddyou=new JDialog();
JDialog DirectAdd=new JDialog();
int tempgetjicq;//get the tempgetjicq
/////////////////////////////friend info
//以下是程序界面的变量
  ImageIcon icon1=new ImageIcon("cab_small.gif");
   ImageIcon icon6=new ImageIcon("sun_small.gif");
  JButton jButton1 = new JButton();
  JButton direct = new JButton();
  JLabel info=new JLabel();
  JDialog about=new JDialog();
  JDialog senddata=new JDialog();
   JDialog getdata=new JDialog();
  JButton ok=new JButton();
  JPopupMenu jPopupMenu1 = new JPopupMenu();
  JMenuItem sendmessage = new JMenuItem();
  JMenuItem getmessage = new JMenuItem();
  JMenuItem lookinfo = new JMenuItem();
  JMenuItem chatrecord = new JMenuItem();
  JLabel name = new JLabel();
  JTextField nametext = new JTextField();
  JLabel icq = new JLabel();
  JTextField icqno = new JTextField();
  JButton send = new JButton();
  JButton cancel = new JButton();
  JTextArea sendtext = new JTextArea();
  JList list;
  JLabel jLabel2 = new JLabel();
  JButton find = new JButton();
  FlowLayout flowLayout1 = new FlowLayout();
 //*************net
//以下是网络相关变量
  Socket socket;
  BufferedReader in;
   PrintWriter out;
  DatagramPacket sendPacket,receivePacket;
  DatagramSocket sendSocket,receiveSocket;
  int udpPORT=5001;//
  int sendPort=5000;//单机调试请改动这里,谢谢!!!!!
  String server;
  int serverport;
   byte array[]=new byte[512];
  Thread thread;
  int myjicq;
  String received;
////以下是程序界面的变量
  JLabel jLabel3 = new JLabel();
  JTextField getfromname = new JTextField();
  JLabel jLabel4 = new JLabel();
  JTextField getfromjicq = new JTextField();
  JTextArea getinfo = new JTextArea();
  JButton getok = new JButton();
  String theip;
  JButton update = new JButton();
  JMenuItem delfriend = new JMenuItem();
  JButton myinfo = new JButton();
  JButton online = new JButton();
  JLabel jLabel1 = new JLabel();
  JTextField helloname = new JTextField();
  JLabel jLabel5 = new JLabel();
  JTextField hellojicq = new JTextField();
  JLabel jLabel6 = new JLabel();
  JTextField helloemail = new JTextField();
  JLabel jLabel7 = new JLabel();
  JTextArea helloinfo = new JTextArea();
  JButton jButton3 = new JButton();
  JButton hellook = new JButton();
  JLabel jLabel8 = new JLabel();
  JLabel jLabel9 = new JLabel();
  JLabel jLabel10 = new JLabel();
  JLabel oneaddme = new JLabel();
  JButton addit = new JButton();
  JButton iknow = new JButton();
  JLabel jLabel11 = new JLabel();
  JLabel jLabel12 = new JLabel();
  JTextField friendid = new JTextField();
  JButton directaddok = new JButton();
//***************net

//以下该函数连接服务器
  public void  ConnectServer(int myid){
   try{ socket=new Socket(InetAddress.getByName(server),serverport);

       in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
       out=new PrintWriter(new BufferedWriter(
                             new OutputStreamWriter(socket.getOutputStream())),true);

  //this is call my friend info
    //以下读取好友信息
          out.println("friend");
          out.println(myid);
        friendnum=Integer.parseInt(in.readLine());
         String friendname=" ";

        String friendjicqno,friendip,friendstatus,picinfo,email,infos;
        do{friendname=in.readLine();
            if(friendname.equals("over"))  break;
            friendnames.add(friendname);
            friendjicqno=in.readLine();
            friendjicq.add(new Integer(friendjicqno));
            friendip=in.readLine();
            friendips.add(friendip);
          friendstatus=in.readLine();
          status.add(friendstatus);
          picinfo=in.readLine();
          picno.add(new Integer(picinfo));
          email=in.readLine();
          friendemail.add(email);
          infos=in.readLine();
         friendinfo.add(infos);
          }while(!friendname.equals("over"));
  }catch(IOException e1){System.out.println("false");}
//以下在列表中显示好友
DefaultListModel mm=(DefaultListModel)list.getModel();
int  picid;

⌨️ 快捷键说明

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