Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/castleyu/tinynotepad

基于JavaFX的记事本
https://github.com/castleyu/tinynotepad

javafx javafx-application

Last synced: about 2 months ago
JSON representation

基于JavaFX的记事本

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
- 管理查找窗口,展示和处理查找和替换功能的用户交互。