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

📄 client.java

📁 达内学习时老师写的一个即时通信系统源码,有一定的学习价值!
💻 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.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//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();
    }// </editor-fold>//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
    
}

⌨️ 快捷键说明

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