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

📄 mainwin.java

📁 The JICQ is the bureau area which JAVA writes according to "Customer s Machine/Server"(C/S) mode mes
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
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));
        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();

⌨️ 快捷键说明

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