www.pudn.com > zhanglongChat.zip > Client.java


/* 
 * Client.java 
 * 
 * 
 */ 
 
package com.project.chat.client; 
 
import javax.swing.*; 
import java.io.*; 
import java.net.*; 
import com.project.util.CharacterUtil; 
/** 
 * 
 * @author  zl 
 */ 
public class Client extends javax.swing.JFrame 
{ 
    private Thread thread; 
   
    /** Creates new form Client */ 
    public Client() 
    { 
        initComponents(); 
    } 
     
    /** This method is called from within the constructor to 
     * initialize the form.4 
     * WARNING: Do NOT modify this code. The content of this method is 
     * always regenerated by the Form Editor. 
     */ 
    // //GEN-BEGIN:initComponents 
    private void initComponents() 
    { 
        jPanel1 = new javax.swing.JPanel(); 
        jLabel1 = new javax.swing.JLabel(); 
        username = new javax.swing.JTextField(); 
        jLabel2 = new javax.swing.JLabel(); 
        hostAddress = new javax.swing.JTextField(); 
        jLabel3 = new javax.swing.JLabel(); 
        port = new javax.swing.JTextField(); 
        jButton1 = new javax.swing.JButton(); 
        jButton2 = new javax.swing.JButton(); 
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
        setTitle("\u7528\u6237\u767b\u9646"); 
        setAlwaysOnTop(true); 
        setResizable(false); 
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "\u7528\u6237\u767b\u9646", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 13), new java.awt.Color(255, 0, 255))); 
        jLabel1.setForeground(new java.awt.Color(0, 51, 255)); 
        jLabel1.setText("\u7528 \u6237 \u540d"); 
 
        jLabel2.setForeground(new java.awt.Color(0, 51, 204)); 
        jLabel2.setText("\u670d\u52a1\u5668\u5730\u5740"); 
 
        jLabel3.setForeground(new java.awt.Color(0, 51, 204)); 
        jLabel3.setText("\u7aef \u53e3 \u53f7"); 
 
        jButton1.setText("\u767b\u9646"); 
        jButton1.addActionListener(new java.awt.event.ActionListener() 
        { 
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            { 
                jButton1ActionPerformed(evt); 
            } 
        }); 
 
        jButton2.setText("\u91cd\u7f6e"); 
        jButton2.addActionListener(new java.awt.event.ActionListener() 
        { 
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            { 
                jButton2ActionPerformed(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() 
                        .addContainerGap() 
                        .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
                            .add(jLabel2) 
                            .add(jLabel3))) 
                    .add(jPanel1Layout.createSequentialGroup() 
                        .add(54, 54, 54) 
                        .add(jButton1)) 
                    .add(jPanel1Layout.createSequentialGroup() 
                        .addContainerGap() 
                        .add(jLabel1))) 
                .add(26, 26, 26) 
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) 
                    .add(port) 
                    .add(hostAddress) 
                    .add(username, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 137, Short.MAX_VALUE) 
                    .add(jPanel1Layout.createSequentialGroup() 
                        .add(33, 33, 33) 
                        .add(jButton2))) 
                .add(48, 48, 48)) 
        ); 
        jPanel1Layout.setVerticalGroup( 
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
            .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup() 
                .addContainerGap() 
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 
                    .add(username, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 26, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
                    .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 24, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 61, Short.MAX_VALUE) 
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 
                    .add(jLabel3) 
                    .add(port, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 28, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 
                .add(28, 28, 28) 
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 
                    .add(jButton2) 
                    .add(jButton1))) 
            .add(jPanel1Layout.createSequentialGroup() 
                .add(51, 51, 51) 
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 
                    .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 26, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
                    .add(hostAddress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 28, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) 
        ); 
 
        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); 
        getContentPane().setLayout(layout); 
        layout.setHorizontalGroup( 
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
            .add(layout.createSequentialGroup() 
                .addContainerGap() 
                .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) 
                .addContainerGap()) 
        ); 
        layout.setVerticalGroup( 
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
            .add(layout.createSequentialGroup() 
                .add(25, 25, 25) 
                .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
                .addContainerGap(56, Short.MAX_VALUE)) 
        ); 
        pack(); 
    }// //GEN-END:initComponents 
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jButton1ActionPerformed 
    {//GEN-HEADEREND:event_jButton1ActionPerformed 
        String username = this.username.getText(); 
        String hostAddress = this.hostAddress.getText(); 
        String hostPort = this.port.getText(); 
         
        if(CharacterUtil.isEmpty(username)) 
        { 
            JOptionPane.showMessageDialog(this,"用户名不能为空!","警告",JOptionPane.WARNING_MESSAGE); 
            this.username.requestFocus(); 
            return; 
        } 
         
        if(!CharacterUtil.isCorrect(username)) 
        { 
            JOptionPane.showMessageDialog(this,"用户名不能包含 @ 与 / 字符!","警告",JOptionPane.WARNING_MESSAGE); 
            this.username.requestFocus(); 
            return; 
        } 
         
        if(CharacterUtil.isEmpty(hostAddress)) 
        { 
            JOptionPane.showMessageDialog(this,"服务器地址不能为空!","警告",JOptionPane.WARNING_MESSAGE); 
            this.hostAddress.requestFocus(); 
            return; 
        } 
        if(CharacterUtil.isEmpty(hostPort)) 
        { 
            JOptionPane.showMessageDialog(this,"端口号不能为空!","警告",JOptionPane.WARNING_MESSAGE); 
            this.port.requestFocus(); 
            return; 
        } 
        if(!CharacterUtil.isNumber(hostPort)) 
        { 
            JOptionPane.showMessageDialog(this,"端口号必须为数字!","警告",JOptionPane.WARNING_MESSAGE); 
            this.port.requestFocus(); 
            return; 
        } 
         
        if(!CharacterUtil.isPortCorrect(hostPort)) 
        { 
            JOptionPane.showMessageDialog(this,"端口号必须在 1024 与 65535 之间!","警告",JOptionPane.WARNING_MESSAGE); 
            this.port.requestFocus(); 
            return; 
        } 
         
        int port = Integer.parseInt(hostPort); 
         
        CharacterUtil.SERVER_HOST = hostAddress;  //服务器地址 
        CharacterUtil.CLIENT_NAME = username; 
         
        thread = new ClientConnectThread(this,hostAddress,port,username); 
        thread.start(); 
         
    }//GEN-LAST:event_jButton1ActionPerformed 
     
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jButton2ActionPerformed 
    {//GEN-HEADEREND:event_jButton2ActionPerformed 
        this.username.setText(""); 
        this.hostAddress.setText(""); 
        this.port.setText(""); 
    }//GEN-LAST:event_jButton2ActionPerformed 
     
    /** 
     * @param args the command line arguments 
     */ 
    public static void main(String args[]) 
    { 
        java.awt.EventQueue.invokeLater(new Runnable() 
        { 
            public void run() 
            { 
                new Client().setVisible(true); 
            } 
        }); 
    } 
     
     
    // 变量声明 - 不进行修改//GEN-BEGIN:variables 
    private javax.swing.JTextField hostAddress; 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JTextField port; 
    private javax.swing.JTextField username; 
    // 变量声明结束//GEN-END:variables 
     
}