📄 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.
*/
// <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 + -