Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/castleyu/tinynotepad
基于JavaFX的记事本
https://github.com/castleyu/tinynotepad
javafx javafx-application
Last synced: about 2 months ago
JSON representation
基于JavaFX的记事本
- Host: GitHub
- URL: https://github.com/castleyu/tinynotepad
- Owner: CastleYu
- Created: 2024-06-04T15:26:33.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-08-23T14:26:43.000Z (5 months ago)
- Last Synced: 2024-10-13T18:22:08.395Z (3 months ago)
- Topics: javafx, javafx-application
- Language: Java
- Homepage:
- Size: 150 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# TinyNotepad
TinyNotepad 是一个简单的记事本应用程序,具有基本的文本编辑功能。该应用程序支持文件操作、文本编辑、查找和替换文本,还包括可自定义的外观设置。
> 本自述文件由ChatGPT-4o根据 `doc.md` 生成,简化版可以看那个
## 使用方法
运行 `NoteapdApp` 类即可启动应用程序。这将打开主窗口,并提供上述所有功能。
## 功能设计
### 主窗口
主窗口包含一个菜单栏,提供各种文件操作、文本编辑和设置选项。### 文件菜单
- **新建**: 创建一个新文件。
- **打开**: 打开一个现有文件。
- **关闭**: 关闭当前文件。
- **保存**: 保存当前文件。
- **另存为**: 将当前文件另存为一个新文件。
- **设置**: 打开设置窗口。
- **退出**: 退出应用程序。### 编辑菜单
- **撤销**: 撤销上一个操作。
- **重做**: 重做上一个撤销的操作。
- **剪切**: 剪切选中的文本。
- **复制**: 复制选中的文本。
- **粘贴**: 粘贴剪贴板中的文本。
- **删除**: 删除选中的文本。
- **全选**: 选中所有文本。
- **取消全选**: 取消所有文本的选择。### 查找菜单
- **查找**: 查找文档中的文本。
- **替换**: 替换文档中的文本。## 类和结构设计
### NoteapdApp
- 应用程序的入口,负责加载主窗口。### NotepadController
- 管理主窗口,并绑定操作到 UI 控件。
- **成员变量**:
- `Settings`: 配置类的单例实例。
- `settingsController`: 设置窗口的控制器。
- `searchManager`: 查找功能的控制器。
- `saveManager`: 文件保存管理器。### 文件包
#### FileAccess
- 负责具体的文件操作。#### SaveManager
- 管理文件的保存,包括自动保存和退出保存机制。
- **成员变量**:
- `hasSaved`: 表示当前文件是否已保存。
- `boundedFile`: 绑定到当前文档的文件对象。如果为 `null`,则使用一个临时文件进行自动保存。
- **方法**:
- `saveToFile()`: 保存到文件。
- `saveAs()`: 另存为一个新文件。
- `save()`: 保存到绑定的文件,如果没有绑定文件,则调用 `saveAs()`。
- `autoSave()`: 自动保存到临时文件,如果没有绑定文件。### 设置包
#### Settings
- 保有设置字段,采用单例模式。#### SettingsController
- 管理设置窗口,展示和处理用户交互。
- **方法**:
- `openSettings()`: 打开设置窗口。
- `closeSettings()`: 关闭设置窗口时触发。
- `applySettings()`: 应用设置(保存设置到 `Settings` 类),并且重新加载记事本或其他方式让新设置立即生效。
- `askforSave()`: 询问是否保存更改,如果保存,则调用 `applySettings()`,仅在有修改时。#### AppearanceSettings
- 管理设置中的外观设置,包括字体、颜色和字体大小。### 查询包
#### SearchManager
- 管理查找功能,包括查找、替换和高亮文本。
- **方法**:
- `highlight(searchText)`: 高亮显示查找的文本。
- `replace(searchText, replaceText)`: 用替换文本替换查找的文本。#### SearchController
- 管理查找窗口,展示和处理查找和替换功能的用户交互。