更新readme和修复保存
This commit is contained in:
parent
a77b2a4654
commit
f9e097311f
70
README.md
70
README.md
@ -4,31 +4,75 @@
|
|||||||

|

|
||||||

|

|
||||||
|
|
||||||
QQ群:386279455
|
|
||||||
|
|
||||||
#### 软件运行截图
|
JNotepad 是一个使用 JavaFX 构建的简单文本编辑器,允许用户创建、打开、编辑和保存文本文件。它支持多个标签,每个标签包含一个文本编辑区域。该编辑器提供基本功能,如创建新文件、打开现有文件、保存文件和使用不同名称保存文件。
|
||||||
- Windows 平台
|
|
||||||

|
QQ群:386279455
|
||||||
- MacOS 平台
|
## 功能介绍
|
||||||

|
|
||||||
#### 安装教程
|
- 创建空白文本区域的新文件。
|
||||||
|
- 打开现有文本文件进行编辑。
|
||||||
|
- 实时更新和自动保存文件。
|
||||||
|
- 使用“另存为”功能将文件另存为不同的名称。
|
||||||
|
- 在状态栏中显示行数、列数和字符计数信息。
|
||||||
|
|
||||||
|
|
||||||
|
## 安装教程
|
||||||
|
|
||||||
1. Windows 平台,可以直接使用我编译好的可执行程序或自己编译
|
1. Windows 平台,可以直接使用我编译好的可执行程序或自己编译
|
||||||
|
|
||||||
[gitee-download]: https://gitee.com/jcnc-org/JNotepad/releases
|
[gitee-download]: https://gitee.com/jcnc-org/JNotepad/releases
|
||||||
|
[java-download]: https://www.oracle.com/cn/java/technologies/downloads/
|
||||||
|
|
||||||
|
|
||||||
- [下载][gitee-download]
|
- [下载][gitee-download]
|
||||||
|
|
||||||
2. Linux/MacOS 平台,克隆后自行编译
|
2. Linux/MacOS 平台,查看入门指南
|
||||||
|
|
||||||
|
|
||||||
|
## 入门指南
|
||||||
|
|
||||||
|
要使用 JNotepad,请按照以下步骤进行:
|
||||||
|
|
||||||
|
1. 下载并安装 Java(如果尚未安装)。
|
||||||
|
- [下载][gitee-download]
|
||||||
|
|
||||||
|
2. 克隆或下载 JNotepad 项目。
|
||||||
<pre><code>git clone https://gitee.com/jcnc-org/JNotepad.git</code></pre>
|
<pre><code>git clone https://gitee.com/jcnc-org/JNotepad.git</code></pre>
|
||||||
|
3. 在您偏好的 Java IDE 中打开项目。
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
1. 运行 `JNotepad` 类以启动应用程序。
|
||||||
|
2. 主窗口将显示菜单栏、标签区域和状态栏。
|
||||||
|
3. 使用菜单栏执行各种操作:
|
||||||
|
- `文件 > 新建`:创建一个带有空白文本区域的新标签。
|
||||||
|
- `文件 > 打开`:打开现有文本文件进行编辑。
|
||||||
|
- `文件 > 保存`:将当前活动标签的内容保存到关联文件中。
|
||||||
|
- `文件 > 另存为`:将当前活动标签的内容保存为新文件。
|
||||||
|
4. 在每个标签的文本区域中编辑内容。
|
||||||
|
5. 状态栏将显示有关光标位置和文本统计信息的信息。
|
||||||
|
|
||||||
#### 参与贡献
|
## 依赖项
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjfx</groupId>
|
||||||
|
<artifactId>javafx-controls</artifactId>
|
||||||
|
<version>17.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
## 软件运行截图
|
||||||
|
- Windows 平台
|
||||||
|

|
||||||
|
- MacOS 平台
|
||||||
|

|
||||||
|
|
||||||
|
### 参与贡献
|
||||||
|
|
||||||
1. Fork 本仓库
|
1. Fork 本仓库
|
||||||
2. 加入JCNC社区
|
1. 加入JCNC社区
|
||||||
3. 新建分支
|
1. 加入QQ群:386279455
|
||||||
4. 提交代码
|
1. 新建分支
|
||||||
5. 新建 Pull Request
|
1. 提交代码
|
||||||
|
1. 新建 Pull Request
|
||||||
|
|||||||
13
pom.xml
13
pom.xml
@ -16,30 +16,17 @@
|
|||||||
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.openjfx</groupId>
|
|
||||||
<artifactId>javafx-controls</artifactId>
|
|
||||||
<version>17.0.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openjfx</groupId>
|
<groupId>org.openjfx</groupId>
|
||||||
<artifactId>javafx-fxml</artifactId>
|
<artifactId>javafx-fxml</artifactId>
|
||||||
<version>17.0.1</version>
|
<version>17.0.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<artifactId>junit-jupiter-api</artifactId>
|
<artifactId>junit-jupiter-api</artifactId>
|
||||||
<version>${junit.version}</version>
|
<version>${junit.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.junit.jupiter</groupId>
|
|
||||||
<artifactId>junit-jupiter-engine</artifactId>
|
|
||||||
<version>${junit.version}</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@ -66,22 +66,8 @@ public class JNotepad extends Application {
|
|||||||
BorderPane.setMargin(statusLabel, new Insets(5, 10, 5, 10));
|
BorderPane.setMargin(statusLabel, new Insets(5, 10, 5, 10));
|
||||||
|
|
||||||
TextArea textArea = new TextArea(); // 创建新的文本编辑区
|
TextArea textArea = new TextArea(); // 创建新的文本编辑区
|
||||||
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
autoSave(textArea); // 自动保存
|
||||||
Tab tab = tabPane.getSelectionModel().getSelectedItem();
|
|
||||||
if (tab != null) {
|
|
||||||
File file = (File) tab.getUserData();
|
|
||||||
if (file != null) {
|
|
||||||
try {
|
|
||||||
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
|
|
||||||
writer.write(newValue); // 写入新的文本内容
|
|
||||||
writer.flush();
|
|
||||||
writer.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Tab tab = new Tab("新建文件 " + ++tabIndex); // 创建新的Tab页
|
Tab tab = new Tab("新建文件 " + ++tabIndex); // 创建新的Tab页
|
||||||
tab.setContent(textArea);
|
tab.setContent(textArea);
|
||||||
tabPane.getTabs().add(tab);
|
tabPane.getTabs().add(tab);
|
||||||
@ -128,24 +114,7 @@ public class JNotepad extends Application {
|
|||||||
String text = textBuilder.toString();
|
String text = textBuilder.toString();
|
||||||
|
|
||||||
TextArea textArea = new TextArea(text); // 创建新的文本编辑区
|
TextArea textArea = new TextArea(text); // 创建新的文本编辑区
|
||||||
|
autoSave(textArea); // 自动保存
|
||||||
// 在创建文本编辑区后添加文本变更监听器
|
|
||||||
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
|
||||||
Tab tab = tabPane.getSelectionModel().getSelectedItem();
|
|
||||||
if (tab != null) {
|
|
||||||
File f = (File) tab.getUserData();
|
|
||||||
if (f != null) {
|
|
||||||
try {
|
|
||||||
BufferedWriter writer = new BufferedWriter(new FileWriter(f));
|
|
||||||
writer.write(newValue); // 写入新的文本内容
|
|
||||||
writer.flush();
|
|
||||||
writer.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Tab tab = new Tab(file.getName()); // 创建新的Tab页
|
Tab tab = new Tab(file.getName()); // 创建新的Tab页
|
||||||
|
|
||||||
tab.setContent(textArea);
|
tab.setContent(textArea);
|
||||||
@ -160,6 +129,27 @@ public class JNotepad extends Application {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void autoSave(TextArea textArea) {
|
||||||
|
// 在创建文本编辑区后添加文本变更监听器
|
||||||
|
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
|
Tab tab = tabPane.getSelectionModel().getSelectedItem();
|
||||||
|
if (tab != null) {
|
||||||
|
File f = (File) tab.getUserData();
|
||||||
|
if (f != null) {
|
||||||
|
try {
|
||||||
|
BufferedWriter writer = new BufferedWriter(new FileWriter(f));
|
||||||
|
writer.write(newValue); // 写入新的文本内容
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 保存文件事件处理器
|
// 保存文件事件处理器
|
||||||
private class SaveFileEventHandler implements EventHandler<ActionEvent> {
|
private class SaveFileEventHandler implements EventHandler<ActionEvent> {
|
||||||
@Override
|
@Override
|
||||||
@ -187,7 +177,6 @@ public class JNotepad extends Application {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 另存为文件事件处理器
|
// 另存为文件事件处理器
|
||||||
private class SaveAsFileEventHandler implements EventHandler<ActionEvent> {
|
private class SaveAsFileEventHandler implements EventHandler<ActionEvent> {
|
||||||
@Override
|
@Override
|
||||||
@ -208,6 +197,7 @@ public class JNotepad extends Application {
|
|||||||
try {
|
try {
|
||||||
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
|
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
|
||||||
TextArea textArea = (TextArea) selectedTab.getContent(); // 获取当前Tab页的文本编辑区
|
TextArea textArea = (TextArea) selectedTab.getContent(); // 获取当前Tab页的文本编辑区
|
||||||
|
autoSave(textArea);// 自动保存
|
||||||
String text = textArea.getText();
|
String text = textArea.getText();
|
||||||
writer.write(text); // 写入文件内容
|
writer.write(text); // 写入文件内容
|
||||||
writer.flush();
|
writer.flush();
|
||||||
@ -236,7 +226,6 @@ public class JNotepad extends Application {
|
|||||||
return text.substring(0, caretPosition).split("\n").length;
|
return text.substring(0, caretPosition).split("\n").length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 获取光标所在列数
|
// 获取光标所在列数
|
||||||
private int getColumn(int caretPosition, String text) {
|
private int getColumn(int caretPosition, String text) {
|
||||||
return caretPosition - text.lastIndexOf("\n", caretPosition - 1);
|
return caretPosition - text.lastIndexOf("\n", caretPosition - 1);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user