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

📄 mainframe.java

📁 个人编写的即时网络通信软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
import java.net.*;
public class MainFrame extends JFrame implements Runnable
{
    private JLabel viewFriendButton=new JLabel("我的好友");
    private JButton findFriendButton=new JButton("查找");
    private JButton offLineButton=new JButton("隐身");
    private JButton onLineButton=new JButton("上线");
    private JButton deleteButton=new JButton("退出");
    private JPanel panel1=new JPanel();
    private JPanel panel2=new JPanel();
    private JPanel panel3=new JPanel();
    private JPanel panel4=new JPanel();
    private JPanel panel5=new JPanel();
    private JPanel panel6=new JPanel();
    private Vector newVector=new Vector();
    private Vector ipVector=new Vector();
    private Vector nameVector=new Vector();
    private Vector qqnoVector=new Vector();
    private JScrollPane aJScrollPane=new JScrollPane();
    private String servername;
    private String serverport;
    private String yourqqno;
    private Socket socket; 
    private BufferedReader in;
    private PrintWriter out;
    private DefaultListModel newListModel=new DefaultListModel();
    private JList newJList=new JList();;
    private Person newPerson;
    private JPopupMenu menu=new JPopupMenu();
    private JMenuItem sendmessage=new JMenuItem("发送消息");
    private JMenuItem lookinfo=new JMenuItem("查看信息");
    private JMenuItem deletefriend=new JMenuItem("删除好友");
    private DatagramPacket sendPacket,receivePacket;
    private DatagramSocket sendSocket,receiveSocket;
    private int udpPort=5000;
  //  private int sendPort=5001;
    private String received;
    private byte array[]=new byte[512];
    private SendMessage newSendMessage;
    Thread thread;
    private String yourname;
    //现在是在单击调试,所以需要两个端口,一个用户用5001来接收,另一个用户用5000来接收,所以在此发送的目标为5000
    //现在是在单击调试,所以需要两个端口,一个用户用5001来接收,另一个用户用5000来接收,所以在此发送的目标为5000
    //现在是在单击调试,所以需要两个端口,一个用户用5001来接收,另一个用户用5000来接收,所以在此发送的目标为5000
    public MainFrame(String s1,String s4,String s2,String s3)
    {
        yourqqno=s1;
        yourname=s4;
        servername=s2;
        serverport=s3;
        ConnectServer(servername,serverport);
        
        newVector=FindMyFriend(yourqqno);
        jbInit(newVector);
        CreatUDP();
        newSendMessage=new SendMessage(sendSocket,receiveSocket,udpPort);
        newSendMessage.setVisible(false);
        onLine();
        thread=new Thread(this);
        thread.start();
    }
    private void jbInit(Vector v)
    {
        this.setTitle(yourname+yourqqno);
        this.setBounds(100,100,200,500);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        Vector aVector=new Vector();
        aVector=v;
        Container c=this.getContentPane();
        c.setLayout(new BorderLayout());
        panel1.setLayout(new BorderLayout());
        panel1.add(viewFriendButton,BorderLayout.WEST);
        aJScrollPane.getViewport().add(newJList,null);
        for(int i=0;i<aVector.size();i++)
        {
            newPerson=(Person) aVector.elementAt(i);
          //  newListModel.addElement(new Object[ ]{new ImageIcon(newPerson.getPic()),newPerson.getNickname()+"   "+newPerson.getStatus()+newPerson.getIp()});
            newListModel.addElement(new Object[ ]{new ImageIcon(newPerson.getPic()),newPerson.getNickname()+"   "+newPerson.getStatus()});
        }
        newJList.setVisibleRowCount(5);
        newJList.setModel(newListModel);
        newJList.setCellRenderer(new Render());
        //     newListModel.addElement(new Object[ ]{new ImageIcon("C:/Program Files/Java/jdk1.5.0_06/java新程序/fwgQQ/picture/3.jpg"),"414206204"});
        
        panel1.add(aJScrollPane,BorderLayout.CENTER);
        panel1.setBorder(BorderFactory.createLineBorder(Color.black)); 
        c.add(panel1,BorderLayout.CENTER);
        panel2.setLayout(new GridLayout(2,2));
        panel2.setBorder(BorderFactory.createLineBorder(Color.black)); 
        panel3.add(findFriendButton);
        panel2.add(panel3);
        panel4.add(onLineButton);
        panel2.add(panel4);
        panel5.add(offLineButton);
        panel2.add(panel5);
        panel6.add(deleteButton);
        panel2.add(panel6);
        c.add(panel2,BorderLayout.SOUTH);
        menu.add(sendmessage);
        menu.add(lookinfo);
        menu.add(deletefriend);
        sendmessage.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mousePressed(MouseEvent e) {
              sendmessage_mousePressed(e);
        }
        });
        lookinfo.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mousePressed(MouseEvent e) {
              lookinfo_mousePressed(e);
        }
        });
       deletefriend.addMouseListener(new java.awt.event.MouseAdapter() {
       public void mousePressed(MouseEvent e) {
              deletefriend_mousePressed(e);
       }
       });
        newJList.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mousePressed(MouseEvent e)
        {
              aJList_mousePressed(e);
        }
        });
        c.validate();
        this.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent event)
            {
               dispose();
            }
        }
        );
        findFriendButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                findFriendButton_actionperformed(e);
            }
        });
        onLineButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onLineButton_actionperformed(e);
            }
        });
        offLineButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                offLineButton_actionperformed(e);
            }
        });
        deleteButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                deleteButton_actionperformed(e);
            }
        });
    }   
    void findFriendButton_actionperformed(ActionEvent e)
    {
        FindQuestion a=new FindQuestion(yourqqno,in,out);
    }
    void onLineButton_actionperformed(ActionEvent e)
    {
        out.println("express_me");
        out.println(yourqqno);
        String answer="";
        try {
            answer=in.readLine().trim();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        if(answer.equals("express_me_false"))
            JOptionPane.showMessageDialog(this,"上线失败!","ok",JOptionPane.INFORMATION_MESSAGE);
        if(answer.equals("express_me_succeed"))
        {
            JOptionPane.showMessageDialog(this,"上线成功!","ok",JOptionPane.INFORMATION_MESSAGE);
            onLine();
        }
    }
    void offLineButton_actionperformed(ActionEvent e)
    {
        out.println("hide_me");
        out.println(yourqqno);
        String answer="";
        try {
            answer=in.readLine().trim();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        if(answer.equals("hide_me_false"))
            JOptionPane.showMessageDialog(this,"隐身失败!","ok",JOptionPane.INFORMATION_MESSAGE);
        if(answer.equals("hide_me_succeed"))      
            JOptionPane.showMessageDialog(this,"隐身成功!","ok",JOptionPane.INFORMATION_MESSAGE);
        
    }
    void deleteButton_actionperformed(ActionEvent e)
    {
        out.println("logout");
        out.println(yourqqno);
        String answer="";
        try {
            answer=in.readLine().trim();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        if(answer.equals("logout_false"))
             JOptionPane.showMessageDialog(this,"下线失败,可能为数据库访问的问题!","ok",JOptionPane.INFORMATION_MESSAGE);
        if(answer.equals("logout_succeed"))
        {
            offLine();
            this.dispose();
            System.exit(0);
        }
    }
   void aJList_mousePressed(MouseEvent e)
   {
       menu.show(this,e.getX()+90,e.getY()-40);
   }
   void lookinfo_mousePressed(MouseEvent e)
   {
       Person Person1=(Person) newVector.elementAt(newJList.getSelectedIndex());
       ViewInfo a=new ViewInfo(Person1);
   }
   void deletefriend_mousePressed(MouseEvent e)
   {
        String hisip;
        String s="onedeleteyou "+yourqqno;
        byte[] data=s.getBytes();
        System.out.println(s);
        Person Person2=(Person) newVector.elementAt(newJList.getSelectedIndex());
        hisip=Person2.getIp();
        out.println("delete_friend");
        out.println(yourqqno);
        out.println(Person2.getQqno());
        String answer="";
        try {
            answer=in.readLine().trim();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        if(answer.equals("delete_friend_false"))
            JOptionPane.showMessageDialog(this,"删除好友失败!","ok",JOptionPane.INFORMATION_MESSAGE);
        if(answer.equals("delete_friend_ok"))
        {
            JOptionPane.showMessageDialog(this,"删除好友成功!","ok",JOptionPane.INFORMATION_MESSAGE);
            flushMyFriend();
            try 
            {
                    sendPacket=new DatagramPacket(data,s.length(),InetAddress.getByName(hisip),udpPort);
                    sendSocket.send(sendPacket);               
            } 
            catch (UnknownHostException ex1) 
            {
                    ex1.printStackTrace();
            }
            catch (IOException ex2)
            {
                    ex2.printStackTrace();
            }
        }
   }
   void sendmessage_mousePressed(MouseEvent e)
   {
       Person Person3=(Person) newVector.elementAt(newJList.getSelectedIndex());
       if(!Person3.getIp().equals("未知"))
       {          
            newSendMessage.setItsName(Person3.getNickname());
            newSendMessage.setItsIp(Person3.getIp());
            newSendMessage.setMyName(yourname);
            newSendMessage.setVisible(true);
       }
       else
           JOptionPane.showMessageDialog(this,"对方不在线,无法得到其IP地址!","ok",JOptionPane.INFORMATION_MESSAGE);
   }
  
   
    public void ConnectServer(String s1,String s2)
    {
        String aservername=s1;
        String aserverport=s2;
        try
        {
            socket=new Socket(InetAddress.getByName(aservername),Integer.parseInt(aserverport));
            in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
        
        }catch(IOException eee)
        {
            System.out.println("网络连接出现问题"); 
        }
    }
    public Vector FindMyFriend(String s)
    {
        Vector aVector=new Vector();
        Person aPerson;
        String myqqno=s;
        String  s1="";
        String  s2="";

⌨️ 快捷键说明

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