# 本地网络聊天室项目 **Repository Path**: backlighting12341/LocalChatApp ## Basic Information - **Project Name**: 本地网络聊天室项目 - **Description**: 本地网络聊天室,添砖加瓦小组的第二次小项目 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: v1.0.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2026-01-28 - **Last Updated**: 2026-02-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LocalChatApp (本地网络聊天室) 添砖加瓦小组的第二次小项目:一个基于 Java Swing 和 Socket 的本地局域网聊天应用。 ## 简介 本项目是一个 C/S 架构的即时通讯软件,支持用户注册、登录、群组聊天、群组管理等功能。 项目采用 Java 语言开发,使用 Swing 作为 GUI 框架,底层通过 TCP Socket 进行全双工通信。 ## 软件架构 项目主要分为三个核心包:`client`(客户端)、`server`(服务端)和 `global`/`util`(公共组件)。 ### 目录结构说明 - **客户端 (Client)** - 入口文件: [`src/main/java/com/tzjava/chatapp/client/Client.java`](src/main/java/com/tzjava/chatapp/client/Client.java) - 业务逻辑: [`src/main/java/com/tzjava/chatapp/client/service/`](src/main/java/com/tzjava/chatapp/client/service/) - `ChatReceiver.java`: 负责接收服务端消息,驱动 UI 更新 - `ChatSender.java`: 负责发送消息给服务端 - `LocalData.java`: 客户端本地数据缓存 - 界面展示: [`src/main/java/com/tzjava/chatapp/client/view/`](src/main/java/com/tzjava/chatapp/client/view/) - `LoginPage.java`: 登录/注册主容器 - `MainPage.java`: 聊天主界面容器 - `login/`: 登录与注册的具体视图组件 - `main/`: 聊天窗口、群组列表等具体视图组件 - **服务端 (Server)** - 入口文件: [`src/main/java/com/tzjava/chatapp/server/Server.java`](src/main/java/com/tzjava/chatapp/server/Server.java) - 业务服务: [`src/main/java/com/tzjava/chatapp/server/serveice/`](src/main/java/com/tzjava/chatapp/server/serveice/) - `ClientChatThread.java`: 处理单个客户端的连接线程 - `Wrapper.java`: 通信协议数据包定义 - 数据模型: [`src/main/java/com/tzjava/chatapp/server/data/`](src/main/java/com/tzjava/chatapp/server/data/) - **公共组件** - 全局常量: [`src/main/java/com/tzjava/chatapp/global/global.java`](src/main/java/com/tzjava/chatapp/global/global.java) - 工具类: [`src/main/java/com/tzjava/chatapp/util/`](src/main/java/com/tzjava/chatapp/util/) - `MsgUtil.java`: 消息处理工具 - `SocketUtil.java`: Socket 相关工具 - `FileUtil.java`: 文件操作工具 ## 核心功能 1. **用户系统** - 登录与注册 - 个人信息维护 2. **即时通讯** - 实时群组聊天 - 消息的接收与发送 3. **群组管理** - 群组列表展示 - 群组信息的更新与维护 ## UI 组件介绍 本项目存在动态替换 UI 组件的设计模式。例如在登录界面,当用户点击“注册”按钮时,登录面板(SignIn)会被替换为注册面板(SignUp)。 - **登录页面 (`LoginPage`)** - 包含 `SignInView`: 登录表单组件 - 包含 `SignUpView`: 注册表单组件 - *替换逻辑*: 通过 `CardLayout` 或移除/添加组件的方式实现面板切换。 - **主界面 (`MainPage`)** - **左侧导航 (`SideOptionView`)**: 功能菜单与群组列表 - **中间内容 (`ContentView`)**: 聊天窗口与消息展示 - **二级选项 (`SecondaryOptionView`)**: 辅助功能入口。*(更新:顶部标题栏添加了明显的上下分割线,增强了与聊天列表及窗口标题的视觉层次感)* - **UI 工具包 (`util`)** - 包含自定义 UI 元素(如 `BlueOutlineWhiteBtn`、`CircleCharIcon2`) - `DesignToken`: 统一定义颜色、字体等设计规范,确保 UI 风格一致性。 ## 项目打包 本项目支持生成独立的客户端安装包。 1. **编译打包**: 使用 Maven 进行编译,`pom.xml` 已配置 `maven-resources-plugin` 自动复制依赖到 `target/lib`。 ```bash mvn clean package ``` 2. **生成客户端映像**: 使用 `jpackage` 生成包含 JRE 的独立客户端。 ```bash jpackage --type app-image --input target --main-jar LocalChatRoom-1.0-SNAPSHOT.jar --main-class com.tzjava.chatapp.client.Client --dest dist --name LocalChatClient --java-options "-Dfile.encoding=UTF-8" ``` 3. **生成安装包**: 使用 Inno Setup 编译 `dist/setup.iss` 脚本,最终生成 `dist/Output/LocalChatApp_Setup.exe`。 ## 拓展功能 本项目预留了好友系统的相关接口与逻辑,虽然当前版本主要聚焦于群组聊天,但后续可拓展以下功能: - **好友管理**: 添加、删除好友 - **私聊功能**: 建立点对点的私聊会话 - **状态同步**: 好友在线/离线状态展示 *注:现阶段这些功能作为拓展项,暂不强制要求实现。* ## 开发环境 - **JDK**: Java 11 (推荐) / Java 8 - **Build Tool**: Maven - **UI Framework**: Java Swing / JavaFX - **Dependencies**: 项目已内置所需依赖库(位于 `lib/` 目录),无需额外配置 Maven 仓库即可构建。 ## 如何运行 1. **启动服务端** 运行 [`src/main/java/com/tzjava/chatapp/server/Server.java`](src/main/java/com/tzjava/chatapp/server/Server.java) 中的 `main` 方法。 2. **启动客户端** 运行 [`src/main/java/com/tzjava/chatapp/client/Client.java`](src/main/java/com/tzjava/chatapp/client/Client.java) 中的 `main` 方法。 *注意:请确保服务端已启动,否则客户端无法连接。* ## 贡献指南 1. Fork 本仓库 2. 新建 `feature/xxx` 分支 3. 提交代码 4. 新建 Pull Request