基本信息
源码名称:java聊天室源码(含客户端、服务端)
源码大小:0.03M
文件格式:.zip
开发语言:Java
更新时间:2020-02-22
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

使用了线程、实现了多人聊天室。

package com.wanggensheng.chatClient;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.LayoutStyle.ComponentPlacement;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JScrollPane;

public class ClientMainWindow extends JFrame {
	
	private static final long serialVersionUID = 1L;
	private JScrollPane scrollPane_1;
	JTextArea chatWindow;
	JTextArea userList;
	JTextArea SendMsg;
	JButton chatCancelButton;
	JButton chatSendButton;
	String userName;
	String sex;
	String userInputName;
	
	/**
	 * Create the frame.
	 */
	public ClientMainWindow() {
		setAlwaysOnTop(false);
		addWindowListener(new WindowAdapter() {
			@Override
			 //关闭窗口动作响应,发送下线信息
			public void windowClosing(WindowEvent arg0) {
				try {
					ChatManager.getCM().send("下线了:" LoginWindow.userInputName ":" LoginWindow.sex); 
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		
		setTitle("聊天客户端~~" LoginWindow.userInputName);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 520, 360);
		
		JLabel label = new JLabel("消息窗口");
		
		JLabel label_1 = new JLabel("在线用户列表");
		
		chatSendButton = new JButton("发送");
		
		chatSendButton.addMouseListener(new MouseAdapter() {       //发送按钮的事件响应
			
			@Override
			public void mouseClicked(MouseEvent arg0) {
				try {
					ChatManager.getCM().send(LoginWindow.userInputName ":" SendMsg.getText());
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				SendMsg.setText("");
			}
		});
		
		chatCancelButton = new JButton("取消");
		chatCancelButton.addMouseListener(new MouseAdapter() {      //设定取消按钮的事件响应,清空输入框
			@Override
			public void mouseClicked(MouseEvent e) {
				SendMsg.setText("");
			}
		});
		
		SendMsg = new JTextArea();
		SendMsg.setText("你好");
		SendMsg.setColumns(10);
		
		JScrollPane scrollPane = new JScrollPane();
		
		/*
		 * 窗体参数设置,自动生成
		*/
		scrollPane_1 = new JScrollPane();
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
						.addGroup(groupLayout.createSequentialGroup()
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
								.addComponent(SendMsg, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 391, Short.MAX_VALUE)
								.addComponent(label)
								.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE))
							.addGap(18)
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
								.addComponent(scrollPane_1, GroupLayout.PREFERRED_SIZE, 84, GroupLayout.PREFERRED_SIZE)
								.addComponent(label_1))
							.addGap(10))
						.addGroup(Alignment.LEADING, groupLayout.createSequentialGroup()
							.addComponent(chatSendButton, GroupLayout.PREFERRED_SIZE, 89, GroupLayout.PREFERRED_SIZE)
							.addGap(96)
							.addComponent(chatCancelButton, GroupLayout.PREFERRED_SIZE, 83, GroupLayout.PREFERRED_SIZE)))
					.addGap(0))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(label)
						.addComponent(label_1))
					.addPreferredGap(ComponentPlacement.UNRELATED)
					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
						.addGroup(groupLayout.createSequentialGroup()
							.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
							.addGap(18)
							.addComponent(SendMsg, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
						.addComponent(scrollPane_1, GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE))
					.addGap(11)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(chatCancelButton)
						.addComponent(chatSendButton, GroupLayout.PREFERRED_SIZE, 24, GroupLayout.PREFERRED_SIZE))
					.addContainerGap())
		);
		userList = new JTextArea();
		userList.setEditable(false);
		scrollPane_1.setViewportView(userList);
		userList.setLineWrap(true);
		
		chatWindow = new JTextArea();
		chatWindow.setEditable(false);
		scrollPane.setViewportView(chatWindow);
		chatWindow.setLineWrap(true);
		
		chatWindow.setText("欢迎进入聊天室......" "\n");
		getContentPane().setLayout(groupLayout);
	}
	/*
	 * 以下为给文本域追加消息的方法
	 * append2ChatWindow(String in)
	 * append2UserList(String in)
	*/
	public void append2ChatWindow(String in) {
		chatWindow.append(in);
		chatWindow.setCaretPosition(chatWindow.getText().length());
	}
	public void append2UserList(String in) {
		userList.append(in);
		userList.setCaretPosition(userList.getText().length());
	}
	public void clearUserList() {
		userList.setText(null);
	}
}