# 本地网络聊天室项目 **Repository Path**: XiaJiaKuo/LocalChatApp ## Basic Information - **Project Name**: 本地网络聊天室项目 - **Description**: 本地网络聊天室,添砖加瓦小组的第二次小项目 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-01-30 - **Last Updated**: 2026-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 本地网络聊天室 ## 1. 项目简介 本项目是一个使用 Java 和 JavaFX 技术栈开发的本地网络聊天应用程序。它实现了一个基础的即时通讯功能,包括用户登录、好友聊天、群组聊天等。项目采用经典的 MVC (Model-View-Controller) 设计模式,结构清晰,易于扩展和维护。 ## 2. 技术栈 * **开发语言**: Java 11 * **构建工具**: Apache Maven * **UI 框架**: JavaFX * **测试框架**: JUnit 5 ## 3. 项目架构 项目遵循 **模型-视图-控制器 (MVC)** 的分层架构。 * **Model (模型层)**: 负责应用程序的数据结构和业务逻辑。 * **View (视图层)**: 负责构建用户界面 (GUI) 和展示数据。 * **Controller/Service (控制/服务层)**: 作为模型和视图之间的桥梁,处理用户输入、调用业务逻辑并更新视图。 ### 3.1 Model (数据模型层) **路径**: `src/main/java/com/tzjava/chatapp/model/` 这部分定义了应用中所有核心数据的结构。 * `AccountModel.java`: 定义用户的账户信息,通常包含用户名和密码等用于身份验证的数据。 * `UserData.java`: 定义用户的个人资料信息,如用户ID、昵称、头像等。 * `GroupData.java`: 定义群组信息,包含群ID、群名称、群成员列表等。 * `MsgData.java`: 定义消息的数据结构,包含消息内容、发送者、接收者、时间戳等。 * `DataUtil.java`: 一个数据处理工具类,可能包含一些静态方法用于格式化或转换数据。 * `Authority.java`: 定义权限相关的模型,用于控制不同用户的操作权限。 ### 3.2 View (视图层) **路径**: `src/main/java/com/tzjava/chatapp/view/` 这部分使用 JavaFX 构建了用户能看到的所有界面。 * `App.java`: **应用程序主入口**。它启动 JavaFX 应用,并加载主页面。 * `LoginPage.java`: 登录页面的主容器,负责整合 `SignInView` 和 `SignUpView`。 * `MainPage.java`: 登录成功后进入的主界面,是整个聊天应用的核心窗口。 #### `view/login/` - 登录与注册视图 * `SignInView.java`: 构建用户登录的具体界面,包含用户名、密码输入框和登录按钮。 * `SignUpView.java`: 构建用户注册的具体界面。 #### `view/main/` - 主聊天界面组件 * `SideOptionView.java`: 主界面的侧边栏,用于切换不同的功能模块(如聊天、好友列表、群组列表)。 * `SecondaryOptionView.java`: 二级侧边栏,展示好友或群组的列表。 * `ContentView.java`: 主内容区域,用于展示聊天消息。 * `ChatInfoView.java`: 聊天窗口的顶部信息栏,显示当前聊天对象(好友或群组)的名称。 * `FriendListItem.java`: 在好友列表中,用于显示单个好友信息的列表项组件。 * `GroupListItem.java`: 在群组列表中,用于显示单个群组信息的列表项组件。 * `GroupInfoView.java`: 展示群聊详细信息的视图。 #### `view/util/` - 自定义UI工具类 * `DesignToken.java`: 定义了UI设计相关的常量,如颜色、字体大小、间距等,以保证界面风格的统一。 * `CircleCharIcon2.java`: 用于生成圆形的、包含字符的图标(例如,用作默认头像)。 * `BlueOutlineWhiteBtn.java`: 一个自定义样式的按钮。 * `LimitSizePanel.java`: 一个可以限制其子组件最大或最小尺寸的布局面板。 ### 3.3 Service/Controller (服务/控制层) **路径**: `src/main/java/com/tzjava/chatapp/service/` 这部分是连接视图和模型的桥梁,负责处理所有业务逻辑。 * `LogInController.java`: 处理用户的登录和注册请求。它会接收来自 `SignInView` 的输入,验证账户信息,并决定是否跳转到 `MainPage`。 * `SendMsgController.java`: 负责处理发送消息的逻辑。当用户在 `ContentView` 中输入并发送消息时,该控制器被触发。 * `ReceiveMsgController.java`: 负责接收来自网络或服务端的其他用户的消息。 * `MsgBody.java`: 定义了消息在网络传输中的具体格式或封装。 * `DataManager.java`: 数据管理器。它可能负责从本地文件或数据库加载初始数据(如好友列表、历史消息),并在程序运行期间管理这些数据。 * `UIUpdater.java`: 一个专门用于更新UI的工具或服务。当后台数据发生变化时(如收到新消息),它负责安全地在 JavaFX 应用线程中更新界面,避免线程安全问题。 ### 3.4 其他关键文件 * `pom.xml`: Maven 项目对象模型文件。它定义了项目的所有依赖(如 JavaFX, JUnit)、构建配置、插件和元数据。是管理整个项目的核心。 * `README.md`: 项目说明文档,也就是你正在阅读的这个文件。 ## 4. 如何运行项目 1. **环境准备**: * 确保已安装 JDK 11 或更高版本。 * 确保已安装 Apache Maven。 * 推荐使用 IntelliJ IDEA 或 Eclipse 等现代 IDE。 2. **启动步骤**: * 使用 IDE 导入本项目(选择 "Open" 或 "Import from existing sources" 并指向项目根目录的 `pom.xml` 文件)。 * IDE 会自动识别为 Maven 项目并下载所有依赖。 * 找到 `src/main/java/com/tzjava/chatapp/App.java` 文件。 * 右键点击并选择 "Run 'App.main()'" 来启动应用程序。 ### 5参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request