# CHAT ROOM 课设
## 希望大家能点个关注捏😋
<img src="JAVA课设.assets/image-20220913102035151-16630356376671.png" alt="image-20220913102035151" style="zoom:67%;" />
# CSDN:https://blog.csdn.net/MODAX?type=blog
<img src="readme.assets/image-20220918202546834.png" alt="image-20220918202546834" style="zoom:67%;" />
# B站:https://space.bilibili.com/294206445?spm_id_from=333.337.0.0
<img src="readme.assets/image-20220918202643798.png" alt="image-20220918202643798" style="zoom:67%;" />
## 0、Chat Room 总布局
> <img src="D:\Typora\Articles\chat room总布局-16621173566482.png" alt="alt" style="zoom:67%;" />
>
> **客户端client:ChatFrame(聊天界面)、LoginFrame(登录界面)、ClientHandler(客户端线程)**
>
> **常量constants:Constants(端口号常量)**
>
> **实体类entity:InfoType(消息类型)、ServerInfoBean(服务器参数信息)、TransferInfo(消息封装)、User(用户封装)IO流io:IOStream(读写消息)**
>
> **服务器server:** **1、设计ui:OnlineUserPanel(在线用户面板)、ServerInfoPanel(服务器信息面板)**
>
> **2、用户列表ulist:ImageCellRender()、ImageListModel()**
>
> **服务器ChatServer(开启服务器)、ServerFrame(服务器界面)、ServerHandler(服务器进程)**
>
> **图片image:bg(背景图片)、uicon(用户图标)**
>
> **user.txt(验证登录)**
>
>
## 1、Constants 常量
### 1、Port 端口
```java
public class Port {
//服务器端口8888
public final static Integer SERVER_PORT = 8888;
}
```
## 2、客户端 Client
### 1、LoginFrame 客户端登录界面
<img src="D:\Typora\Articles\LoginFrame-16622871120521.png" alt="alt" style="zoom:67%;" />
```java
public class LoginFrame extends JFrame {
// 设置窗体宽度常量
private static final Integer FRAME_WIDTH = 600;
// 设置窗体高度常量
private static final Integer FRAME_HEIGHT = 400;
//构造方法
public LoginFrame() {
//下面对LoginFrame的设置加不加this.都行
setTitle("❤CHAT ROOM❤"); //设置标题
setSize(FRAME_WIDTH, FRAME_HEIGHT); //设置尺寸
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭模式
setResizable(false); //窗口是否可缩放(不行)
// 获取屏幕像素并确定计算窗口位置居中,两种方法
setLocationRelativeTo(null);
// Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
// int screenWidth = screenSize.width;
// int screenheight = screenSize.height;
// setLocation((screenWidth - FRAME_WIDTH) / 2, (screenheight - FRAME_HEIGHT) / 2);
//标题图标,把咖啡杯换成嘉然的头像
Toolkit toolkit=Toolkit.getDefaultToolkit();
Image topIcon=toolkit.getImage("src/image/bg/login-icon.jpg");
setIconImage(topIcon);
// 背景图片,把图片放在JLabel标签里
ImageIcon imageBg = new ImageIcon("src/image/bg/JRbg.jpg");
JLabel jlbBg = new JLabel(imageBg);
// 图片的位置和大小【不设置也不影响】
jlbBg.setBounds(0, 0, FRAME_WIDTH, FRAME_HEIGHT);
jlbBg.setLayout(null); // 布局为空布局
add(jlbBg); //LoginFrame加入标签组件
// 标题
JLabel lblTitle = new JLabel("❤ CHAT ROOM ❤");
lblTitle.setBounds(150, 35, 350, 55); // x,y,宽,高
lblTitle.setFont(new Font("PingFang SC", Font.BOLD, 36)); //苹方字体,加粗,36尺寸
lblTitle.setForeground(Color.RED); //字体红色
jlbBg.add(lblTitle); //大背景图加入标题组件
// 账户
JLabel lblUid = new JLabel("ACCOUNT:");
lblUid.setBounds(150, 120, 110, 30); //x,y,宽,高
lblUid.setFont(new Font("PingFang SC", Font.BOLD, 16));
lblUid.setForeground(Color.BLACK);
jlbBg.add(lblUid);
//账户文本框
JTextField textUid = new JTextField();
textUid.setBounds(260, 120, 160, 30);
jlbBg.add(textUid);
// 密码【和账户设置差不多】
JLabel lblPwd = new JLabel("PASSWORD:");
lblPwd.setBounds(150, 180, 110, 30);
lblPwd.setFont(new Font("PingFang SC", Font.BOLD, 16));
lblPwd.setForeground(Color.BLACK);
jlbBg.add(lblPwd);
//密码文本框
JPasswordField textPwd = new JPasswordField();
textPwd.setBounds(260, 180, 160, 30);
jlbBg.add(textPwd);
// 登录按钮
JButton login = new JButton("LOGIN");
login.setBounds(175, 250, 103, 30);
login.setBackground(Color.PINK); //背景粉色
login.setForeground(Color.WHITE); //字体白色
login.setFont(new Font("PingFang SC", Font.BOLD, 16));
//登录按钮监听
login.addActionListener(new ActionListener() { //匿名内部类,只在登录时使用一次
@Override
public void actionPerformed(ActionEvent e) {
String username = textUid.getText(); //获取用户名
String password = textPwd.getText(); //获取密码
TransferInfo transferInfo = new TransferInfo(); //实例化传输信息对象
transferInfo.setUsername(username); //设置用户名
transferInfo.setPassword(password); //设置密码
transferInfo.setStatusEnum(ChatStatus.LOGIN); //设置信息为登录
connectionServer(transferInfo); //与服务器连接
}
});
jlbBg.add(login);
// 取消按钮
JButton cancel = new JButton("CANCEL");
cancel.setBounds(355, 250, 103, 30);
cancel.setBackground(Color.PINK);
cancel.setForeground(Color.WHITE);
cancel.setFont(new Font("PingFang SC", Font.BOLD, 16));
jlbBg.add(cancel);
setVisible(true); //设置可视化
//连接服务器的方法
public void connectionServer(TransferInfo transferInfo) {
try {
Socket socket = new Socket("127.0.0.1", 8888); //创建socket(主机,端口)
//写一个消息
IOStream.writeMessage(socket, transferInfo);
//开启客户端子线程,接收消息
ClientHandler clientHandler = new ClientHandler(socket, this);
clientHandler.start();
} catch (UnknownHostException e1) { //捕获一下异常
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("点击了login按钮");
}
//主函数:启动登录界面
public static void main(String[] args) {
new LoginFrame();
}
}
}
```
### 2、ClientHandler 客户端线程
```java
// 客户端开启一个线程,来一起读消息
public class ClientHandler extends Thread {
Socket socket; //声明socket
LoginFrame loginFrame; //登录界面
ChatFrame chatFrame; //聊天界面
//含参构造方法(socket,登录界面)
public ClientHandler(Socket socket, LoginFrame loginFrame) {
this.socket = socket;
this.loginFrame = loginFrame;
}
@Override
public void
没有合适的资源?快使用搜索试试~ 我知道了~
Java在线聊天室课设(二次元嘉然版)
共82个文件
jpg:24个
class:24个
java:17个
5星 · 超过95%的资源 需积分: 30 4 下载量 178 浏览量
2022-09-18
20:33:43
上传
评论 2
收藏 5.1MB ZIP 举报
温馨提示
学完GUI图形化编程、IO流、网络Socket编程就可以看懂写这个项目了 主要是三个界面,登录界面、服务器界面、聊天界面 客户端服务器端两个大类下分别存在:开启客户端(服务器端)类、线程类、界面设计类 总体难度不是很大,GUI风格设置的挺简约、粉色系可爱捏
资源详情
资源评论
资源推荐
收起资源包目录
Java在线聊天室课设.zip (82个子文件)
Java在线聊天室课设
bin
image
usericon
admin.jpg 29KB
jxt.jpg 38KB
byd.jpg 45KB
xy.jpg 37KB
bg
alterbtn.jpg 13KB
chatframe-icon.jpg 60KB
server-icon.jpg 28KB
login-fail.jpg 133KB
JRbg.jpg 479KB
login-icon.jpg 29KB
alterBg-2.jpg 96KB
alterBg-1.jpg 69KB
com
xy
chatting
client
ChatFrame$4.class 2KB
ChatFrame$1.class 1KB
ChatFrame$3.class 2KB
ClientHandler$MyDialog.class 1KB
LoginFrame$1.class 2KB
ClientHandler.class 4KB
ChatFrame$5.class 1KB
ChatFrame$2.class 1KB
LoginFrame.class 4KB
ChatFrame.class 5KB
server
ServerFrame.class 2KB
ChatServer.class 3KB
ui
OnlineUserPanel.class 2KB
ServerInfoPanel.class 4KB
ServerHandler.class 7KB
constants
Port.class 470B
ulist
ImageListModel.class 1KB
ImageCellRenderer.class 2KB
io
IOStream.class 2KB
Jdbc
Jdbc.class 2KB
entity
User.class 1019B
ServerInfoBean.class 1KB
InfoType.class 2KB
TransferInfo.class 2KB
user.txt 51B
readme.md 43KB
chatting.iml 540B
.settings
org.eclipse.jdt.core.prefs 598B
src
image
usericon
admin.jpg 29KB
jxt.jpg 38KB
byd.jpg 45KB
xy.jpg 37KB
bg
alterbtn.jpg 13KB
chatframe-icon.jpg 60KB
server-icon.jpg 28KB
login-fail.jpg 133KB
JRbg.jpg 479KB
login-icon.jpg 29KB
alterBg-2.jpg 96KB
alterBg-1.jpg 69KB
com
xy
chatting
client
LoginFrame.java 4KB
ChatFrame.java 7KB
ClientHandler.java 4KB
server
ServerFrame.java 2KB
ui
ServerInfoPanel.java 5KB
OnlineUserPanel.java 2KB
ServerHandler.java 7KB
ChatServer.java 2KB
constants
Port.java 138B
ulist
ImageListModel.java 656B
ImageCellRenderer.java 1KB
io
IOStream.java 1KB
Jdbc
Jdbc.java 1KB
entity
User.java 834B
InfoType.java 610B
TransferInfo.java 2KB
ServerInfoBean.java 654B
user.txt 51B
.idea
dbnavigator.xml 27KB
uiDesigner.xml 9KB
misc.xml 282B
.name 8B
modules.xml 263B
workspace.xml 7KB
.gitignore 50B
libraries
lib.xml 266B
inspectionProfiles
Project_Default.xml 556B
lib
mysql-connector-java-8.0.30.jar 2.4MB
readme.assets
image-20220918202643798.png 528KB
image-20220918202546834.png 214KB
共 82 条
- 1
猫摆力
- 粉丝: 930
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论10