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

|
||||

|
||||
|
||||
QQ群:386279455
|
||||
|
||||
#### 软件运行截图
|
||||
- Windows 平台
|
||||

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

|
||||
#### 安装教程
|
||||
JNotepad 是一个使用 JavaFX 构建的简单文本编辑器,允许用户创建、打开、编辑和保存文本文件。它支持多个标签,每个标签包含一个文本编辑区域。该编辑器提供基本功能,如创建新文件、打开现有文件、保存文件和使用不同名称保存文件。
|
||||
|
||||
QQ群:386279455
|
||||
## 功能介绍
|
||||
|
||||
- 创建空白文本区域的新文件。
|
||||
- 打开现有文本文件进行编辑。
|
||||
- 实时更新和自动保存文件。
|
||||
- 使用“另存为”功能将文件另存为不同的名称。
|
||||
- 在状态栏中显示行数、列数和字符计数信息。
|
||||
|
||||
|
||||
## 安装教程
|
||||
|
||||
1. Windows 平台,可以直接使用我编译好的可执行程序或自己编译
|
||||
|
||||
[gitee-download]: https://gitee.com/jcnc-org/JNotepad/releases
|
||||
[java-download]: https://www.oracle.com/cn/java/technologies/downloads/
|
||||
|
||||
|
||||
- [下载][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>
|
||||
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 本仓库
|
||||
2. 加入JCNC社区
|
||||
3. 新建分支
|
||||
4. 提交代码
|
||||
5. 新建 Pull Request
|
||||
1. 加入JCNC社区
|
||||
1. 加入QQ群:386279455
|
||||
1. 新建分支
|
||||
1. 提交代码
|
||||
1. 新建 Pull Request
|
||||
|
||||
13
pom.xml
13
pom.xml
@ -16,30 +16,17 @@
|
||||
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.openjfx</groupId>
|
||||
<artifactId>javafx-controls</artifactId>
|
||||
<version>17.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openjfx</groupId>
|
||||
<artifactId>javafx-fxml</artifactId>
|
||||
<version>17.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<version>${junit.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
<version>${junit.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@ -66,22 +66,8 @@ public class JNotepad extends Application {
|
||||
BorderPane.setMargin(statusLabel, new Insets(5, 10, 5, 10));
|
||||
|
||||
TextArea textArea = new TextArea(); // 创建新的文本编辑区
|
||||
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
autoSave(textArea); // 自动保存
|
||||
|
||||
Tab tab = new Tab("新建文件 " + ++tabIndex); // 创建新的Tab页
|
||||
tab.setContent(textArea);
|
||||
tabPane.getTabs().add(tab);
|
||||
@ -128,24 +114,7 @@ public class JNotepad extends Application {
|
||||
String text = textBuilder.toString();
|
||||
|
||||
TextArea textArea = new TextArea(text); // 创建新的文本编辑区
|
||||
|
||||
// 在创建文本编辑区后添加文本变更监听器
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
autoSave(textArea); // 自动保存
|
||||
Tab tab = new Tab(file.getName()); // 创建新的Tab页
|
||||
|
||||
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> {
|
||||
@Override
|
||||
@ -187,7 +177,6 @@ public class JNotepad extends Application {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 另存为文件事件处理器
|
||||
private class SaveAsFileEventHandler implements EventHandler<ActionEvent> {
|
||||
@Override
|
||||
@ -208,6 +197,7 @@ public class JNotepad extends Application {
|
||||
try {
|
||||
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
|
||||
TextArea textArea = (TextArea) selectedTab.getContent(); // 获取当前Tab页的文本编辑区
|
||||
autoSave(textArea);// 自动保存
|
||||
String text = textArea.getText();
|
||||
writer.write(text); // 写入文件内容
|
||||
writer.flush();
|
||||
@ -236,7 +226,6 @@ public class JNotepad extends Application {
|
||||
return text.substring(0, caretPosition).split("\n").length;
|
||||
}
|
||||
|
||||
|
||||
// 获取光标所在列数
|
||||
private int getColumn(int caretPosition, String text) {
|
||||
return caretPosition - text.lastIndexOf("\n", caretPosition - 1);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user