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

📄 私聊界面.java

📁 我用JAVA写的QQ程序
💻 JAVA
字号:
/*
 * 私聊界面.java
 *
 * Created on 2007年5月5日, 下午5:08
 */

package 客户端程序包;
import java.applet.Applet;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;
import java.util.Date;
import java.util.StringTokenizer;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.applet.AudioClip;

/**
 *
 * @author  王绿春  南昌大学软件学院045班
 */
public class 私聊界面 extends javax.swing.JFrame  implements Runnable{
    String FMessage=null;
    Socket ClientSocket=null;
    String From=null;
    String QQNumber=null;
    String NickN=null;

    private int result;
    /** Creates new form 私聊界面 */
    public 私聊界面(Socket client_socket,String from,String Nick,String QQNum) {
        initComponents();
        ClientSocket=client_socket;
        System.out.println("私聊界面的SOCKET:"+ClientSocket);
        From=from;
        NickN=Nick;
        QQNumber=QQNum;        
        int result=0;
        this.setTitle("与"+NickN+"聊天中");
        //提示框.setText("你正在和"+From+"聊天中...");
        this.setBounds(450,220,400,400);
        //聊天信息框.setEditable(false);
        this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
        this.聊天信息框.setSelectedTextColor(Color.BLUE);
        this.聊天信息框.setColumns(33);
        this.聊天信息框.setLineWrap(true);
        this.发送信息框.setColumns(33);
        this.发送信息框.setLineWrap(true);
        this.发送信息框.setSelectedTextColor(Color.BLUE);
    }
   public static String FindNickName(String number){
       String Number=number;
       String Nic=number;
       try{
              
              StringTokenizer St=new StringTokenizer(好友界面.Friend,"#");
              
              while(St.hasMoreTokens()){
                  String s=St.nextToken();
                  String Num=s.substring(1,10);
                  if(Num.equals(Number)){
                      Nic=s.substring(10);
                  }
               }
              
              
              
          }catch(NullPointerException e){
            
          }
       return Nic;
   }
   public void run(){
       
       this.addWindowListener(new WindowAdapter(){
           public void windowClosing(WindowEvent e){
               
               好友界面.InforList.RemoveMember(From);
               System.out.println("运行了这里!");
               dispose();
               
               
           }
       });
       
       while(true){
           int i=0;
           for(i=0;i<好友界面.InforList.GetLength();i++){
               //System.out.println(好友界面.InforList.GetMember(i).GetSender());
               
               //System.out.println(i);
               //System.out.println(好友界面.InforList.GetLength());
               //System.out.println("adf"+好友界面.InforList.GetMember(i).GetMessage());
               if(好友界面.InforList.GetMember(i).GetSender().equals(From)){
                   if(!好友界面.InforList.GetMember(i).GetMessage().equals("")){
                        String Infor=好友界面.InforList.GetMember(i).GetMessage();
                        String TimLen=Infor.substring(0,2);
                        int TimeLength=Integer.valueOf(TimLen);
                        System.out.println("长度:"+TimeLength);
                        System.out.println("消息是:"+Infor);
                        聊天信息框.append(" "+FindNickName(From)+" "+Infor.substring(2,TimeLength+2)+"\n"+"  "+Infor.substring(2+TimeLength)+"\n");
                        好友界面.InforList.GetMember(i).SetMessage("");
                        break;
                   }
                   //else{
                      // break;
                  // }
               }
           }
       }
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        聊天信息框 = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        发送信息框 = new javax.swing.JTextArea();
        ChatRecord = new javax.swing.JButton();
        Send = new javax.swing.JButton();
        SendFile = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);
        jPanel1.setBackground(new java.awt.Color(255, 255, 255));
        聊天信息框.setColumns(20);
        聊天信息框.setEditable(false);
        聊天信息框.setLineWrap(true);
        聊天信息框.setRows(5);
        聊天信息框.setWrapStyleWord(true);
        jScrollPane1.setViewportView(聊天信息框);

        发送信息框.setColumns(20);
        发送信息框.setRows(5);
        jScrollPane2.setViewportView(发送信息框);

        ChatRecord.setText("\u804a\u5929\u8bb0\u5f55");
        ChatRecord.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                ChatRecordMouseClicked(evt);
            }
        });

        Send.setText("\u53d1\u9001");
        Send.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                SendMouseClicked(evt);
            }
        });

        SendFile.setText("\u4f20\u8f93\u6587\u4ef6");
        SendFile.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                SendFileMouseClicked(evt);
            }
        });

        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel1Layout.createSequentialGroup()
                        .add(10, 10, 10)
                        .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jPanel1Layout.createSequentialGroup()
                                .add(ChatRecord, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 97, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(SendFile, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 70, Short.MAX_VALUE)
                                .add(Send, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 83, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                            .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 347, Short.MAX_VALUE)))
                    .add(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 347, Short.MAX_VALUE)))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .add(21, 21, 21)
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 156, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 26, Short.MAX_VALUE)
                .add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(18, 18, 18)
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(Send)
                    .add(SendFile)
                    .add(ChatRecord))
                .addContainerGap())
        );

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void SendFileMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_SendFileMouseClicked
// TODO 将在此处添加您的处理代码:
     TransFile=new Thread() { 
       public void run() {          
               fc = new JFileChooser(); 
               result = fc.showOpenDialog(私聊界面.this); 
               File file = fc.getSelectedFile(); 
               if(file!=null && result==JFileChooser.APPROVE_OPTION) { 
                     fileName = file.getAbsolutePath(); 
                     System.out.println("You chose to open this file: " +fileName); 
                     try{ 
                            File file1=new File(fileName); 
                            FileInputStream fos=new FileInputStream(file1); 
                            //创建网络服务器接受客户请求 
                            ServerSocket ss=new ServerSocket(7777); 
                            Socket client=ss.accept(); 
                            //创建网络输出流并提供数据包装器 
                            OutputStream netOut=client.getOutputStream(); 
                            OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut)); 
                            //创建文件读取缓冲区 
                            byte[] buf=new byte[2048]; 
                            int num=fos.read(buf); 
                            while(num!=(-1)) { //是否读完文件 
                                   doc.write(buf,0,num);//把文件数据写出网络缓冲区 
                                   doc.flush();//刷新缓冲区把数据写往客户端 
                                   num=fos.read(buf);//继续从文件中读取数据 
                             } 
                             fos.close(); 
                             doc.close(); 
                       } 
                       catch(Exception ex){ 
                              System.out.println(ex); 
                       } 
                 } 
                 if(result == JFileChooser.CANCEL_OPTION){ 
                 }
               
           }
     };
               TransFile.start();
        
               String Port="7777";
               String Address=ClientSocket.getInetAddress().toString().substring(1);
               System.out.println(From+Port+Address);
               new SendAndReceive(ClientSocket,"TransFile"+From+Port+Address).SendMessage();
    }//GEN-LAST:event_SendFileMouseClicked

    private void ChatRecordMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_ChatRecordMouseClicked
// TODO 将在此处添加您的处理代码:
        String ChatRecord=null;   
        聊天记录 ChatRecordFrame=new 聊天记录(ClientSocket,QQNumber,From);
        ChatRecordFrame.setVisible(true);
        new Thread(ChatRecordFrame).start();
               
    }//GEN-LAST:event_ChatRecordMouseClicked
   
    private void SendMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_SendMouseClicked
// TODO 将在此处添加您的处理代码:
        String Message=发送信息框.getText();
        System.out.println(Message);
        Date date = new Date();
        String Time = date.toLocaleString();
        //String Time=date.toString();
        //String Time=date.getYear()+"-"+date.getMonth()+"-"+date.getDay()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
        //System.out.println("时间长度"+Time.length());
        //int Time=date.getMonth();
        System.out.println("系统时间:"+Time);
        聊天信息框.append(" "+FindNickName(QQNumber)+" "+Time+"\n"+"  "+Message+"\n");
        发送信息框.setText("");
        PrintWriter ClientOut;
        try {
            ClientOut = new PrintWriter(ClientSocket.getOutputStream());
            ClientOut.println("1"+From+QQNumber+Time.length()+Time+Message);
            ClientOut.flush();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
       
        
    }//GEN-LAST:event_SendMouseClicked
    
    /**
     * @param args the command line arguments
     */
    private void CloseClicked(java.awt.event.MouseEvent evt){
        
    }
    
    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    private javax.swing.JButton ChatRecord;
    private javax.swing.JButton Send;
    private javax.swing.JButton SendFile;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextArea 发送信息框;
    private javax.swing.JTextArea 聊天信息框;
    // 变量声明结束//GEN-END:variables
    private JFileChooser fc=null;
    private String fileName=null;
    public static Thread TransFile=null;
    
     
}


⌨️ 快捷键说明

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