📄 mychatroomclient.java
字号:
package newackage;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.rmi.UnknownHostException;
import javax.swing.*;
import org.w3c.dom.events.MouseEvent;
public class MyChatRoomClient extends javax.swing.JFrame implements Runnable {
PrintWriter out=null;
BufferedReader in = null;
Socket sock;
public static int port=6666;
Thread readThread;
boolean isTrue = true;
int line=0;
JLabel label[]=new JLabel[20];
static String address=null;
int n=0;
String name=null;
String IPaddress=null;
public MyChatRoomClient(String str,String name) {
super("大众聊天室.作者:甘海东 李业晨 陈春宇 06003402班");
initComponents();
this.name=name;
IPaddress=str;
connect(IPaddress);
this.name=name;
}
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
TextArea1 = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
TextArea2 = new javax.swing.JTextArea();
Button2 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
list1 = new java.awt.List();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(153, 244, 51));
setForeground(new java.awt.Color(51, 0, 255));
setName("\u6211\u4eec\u7684\u804a\u5929\u5ba4\uff1a\u674e\u4e1a\u6668\uff0c\u7518\u6d77\u4e1c\uff0c\u9648\u6625\u5b87");
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
TextArea1.setColumns(20);
TextArea1.setRows(5);
jScrollPane1.setViewportView(TextArea1);
TextArea2.setColumns(20);
TextArea2.setRows(5);
TextArea2.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
TextArea2KeyPressed(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
TextArea2KeyTyped(evt);
}
});
jScrollPane2.setViewportView(TextArea2);
Button2.setBackground(new java.awt.Color(204, 204, 255));
Button2.setFont(new java.awt.Font("宋体", 0, 24));
Button2.setForeground(new java.awt.Color(51, 0, 204));
Button2.setText("\u53d1\u9001");
Button2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Button2ActionPerformed(evt);
}
});
jLabel1.setBackground(new java.awt.Color(102, 255, 102));
jLabel1.setFont(new java.awt.Font("宋体", 1, 24));
jLabel1.setText("\u5728\u7ebf\u597d\u53cb");
list1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
list1MouseClicked(evt);
}
});
jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/111.JPG")));
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(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
.add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 344, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(list1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
.add(jLabel1))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.add(Button2))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 374, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(layout.createSequentialGroup()
.add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 323, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE))
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 352, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(list1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
.add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 124, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(Button2)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void list1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_list1MouseClicked
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_list1MouseClicked
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
exit();
}//GEN-LAST:event_formWindowClosing
private void TextArea2KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TextArea2KeyPressed
int j = evt.getKeyCode();
if (j == evt.VK_ENTER) {
out.println(TextArea2.getText());
out.flush();
TextArea2.setText("");
}
}//GEN-LAST:event_TextArea2KeyPressed
private void TextArea2KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TextArea2KeyTyped
int j = evt.getKeyCode();
if (j == evt.VK_ENTER) {
out.println(TextArea2.getText());
out.flush();
TextArea2.setText("");
}
}//GEN-LAST:event_TextArea2KeyTyped
private void Button2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button2ActionPerformed
out.println(TextArea2.getText());
out.flush();
TextArea2.setText("");
}//GEN-LAST:event_Button2ActionPerformed
void connect(String str)
{
try {
sock = new Socket(str, port);
if (sock != null) {
processMsg("服务器连接成功!");
}
in = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream());
out.println(name);
out.flush();
} catch (IOException ex) {
processMsg(ex.toString());
processMsg("Connect failed!");
}
readThread = new Thread(this);
readThread.start();
}
public void run() {
String msg;
isTrue = true;
while (isTrue) {
try {
msg = in.readLine();
if(msg.startsWith("$$$$"))
{
this.wait();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyChatRoomClient(IPaddress,"").setVisible(true);
}
});
}else
if(msg.startsWith("$$$"))
{
list1.removeAll();
}
else
if(msg.startsWith("$$#"))
{
list1.add(msg.substring(3));
} else
if (msg.equals("exit")) {
processMsg(msg);
isTrue = false;// 终止线程
}
else
if (msg != null) {
processMsg(msg);
}
Thread.sleep(1000);
} catch (IOException e) {
processMsg(e.toString());
} catch (InterruptedException ei) {
processMsg(ei.toString());
}
}
try {// 服务器退出关闭连接和相关的"流"
sock.close();
in.close();
out.close();
} catch (IOException ioe) {
}
}
public void processMsg(String msg) {// 客户端处理消息
TextArea1.append(msg);
TextArea1.append("\n");
TextArea2.setText(null);// 把消息栏重新清空
}
public void exit() {// 窗口关闭;如果有连接则关闭连接和相关的"流"
try {
out.println("Client exit!");
out.flush();
} catch (Exception exc) {
}
try {
sock.close();
in.close();
out.close();
} catch (IOException ioe) {
}
finally {
System.exit(0);
}
}
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JButton Button2;
private javax.swing.JTextArea TextArea1;
private javax.swing.JTextArea TextArea2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private java.awt.List list1;
// 变量声明结束//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -