diff --git a/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java b/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java index 6607ec1..ab121af 100644 --- a/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java +++ b/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java @@ -44,13 +44,6 @@ public interface ControllerInterface { */ EventHandler getOpenFileEventHandler(); - /** - * 获取保存文件处理事件处理程序 - * - * @return 保存文件处理事件处理程序 - */ - EventHandler getSaveFileEventHandler(); - /** * 获取另存为文件处理事件处理程序 * @@ -117,9 +110,4 @@ public interface ControllerInterface { */ void initTabPane(); - /** - * 另存为文件 - */ - void saveAsFile(); - } diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/LineFeed.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/LineFeed.java index 4b721ee..870ee9d 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/LineFeed.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/LineFeed.java @@ -3,10 +3,12 @@ package org.jcnc.jnotepad.controller.event.handler; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.TextArea; -/** - * LineFeed 类是一个事件处理程序,用于在文本区域中插入一个换行符。 - */ +/** + * 换行程序。 + *

+ * 用于在文本区域中插入一个换行符。 + */ public class LineFeed implements EventHandler { private final TextArea textArea; diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java index 1e36331..ab0bbb0 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java @@ -10,22 +10,38 @@ import org.jcnc.jnotepad.view.manager.ViewManager; import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; /** - *处理新建文件事件的事件处理程序。 - *当用户选择新建文件菜单或按钮时,将创建一个新的文本编辑区,并在Tab页中显示。 - * */ - - + * 新建文件事件的事件处理程序。 + *

+ * 当用户选择新建文件时候,将创建一个新的文本编辑区,并在Tab页中显示。 + */ public class NewFile implements EventHandler { + /** + * 处理新建文件事件。 + * + * @param event 事件对象 + */ @Override public void handle(ActionEvent event) { + // 获取控制器 Controller controller = new Controller(); - TextArea textArea = new TextArea(); // 创建新的文本编辑区 - Tab tab = new Tab("新建文本 " + ++ViewManager.tabIndex); // 创建新的Tab页 + + // 创建一个新的文本编辑区 + TextArea textArea = new TextArea(); + + // 创建一个新的Tab页 + Tab tab = new Tab("新建文本 " + ++ViewManager.tabIndex); tab.setContent(textArea); + + // 将Tab页添加到TabPane中 tabPane.getTabs().add(tab); + + // 将新建的Tab页设置为选中状态 tabPane.getSelectionModel().select(tab); + + // 更新状态标签 controller.updateStatusLabel(textArea); + // 更新编码信息 - controller.upDateEncodingLabel(textArea.getText()); // 更新文本编码信息 + controller.upDateEncodingLabel(textArea.getText()); } } \ No newline at end of file diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java index b8f5fda..26aa1b2 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java @@ -12,11 +12,13 @@ import java.io.File; import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; /** - * 打开文件事件处理器. + * 打开文件的事件处理程序。 + *

+ * 当用户选择打开文件时,将创建一个新的文本编辑区,并在Tab页中显示。 */ public class OpenFile implements EventHandler { /** - * 处理打开文件事件. + * 处理打开文件事件。 * * @param event 事件对象 */ diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java index 32c5d13..bbee50b 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java @@ -14,7 +14,20 @@ import java.io.IOException; import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; +/** + * 保存文件事件处理器。 + *

+ * 当用户选择保存文件时,当用户选择另存为文件菜单或按钮时, + * 会弹出一个保存文件对话框,用户选择保存位置和文件名后, + * 将当前文本编辑区的内容保存到指定文件中, + * 并更新Tab页上的文件名和UserData。 + */ public class SaveAsFile implements EventHandler { + /** + * 处理保存文件事件。 + * + * @param event 事件对象 + */ @Override public void handle(ActionEvent event) { Controller controller = new Controller(); diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveFile.java deleted file mode 100644 index abf04e5..0000000 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveFile.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.jcnc.jnotepad.controller.event.handler; - -import javafx.event.ActionEvent; -import javafx.event.EventHandler; -import javafx.scene.control.Tab; -import javafx.scene.control.TextArea; -import org.jcnc.jnotepad.controller.manager.Controller; - -import java.io.*; -import java.nio.charset.StandardCharsets; - -import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; - -// 保存文件事件处理器 -public class SaveFile implements EventHandler { - @Override - public void handle(ActionEvent event) { - Controller controller = new Controller(); - Tab selectedTab = tabPane.getSelectionModel().getSelectedItem(); - if (selectedTab != null) { - File file = (File) selectedTab.getUserData(); - if (file == null) { - controller.saveAsFile(); - } else { - try { - BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8)); - TextArea textArea = (TextArea) selectedTab.getContent(); - String text = textArea.getText(); - writer.write(text); - writer.flush(); - writer.close(); - } catch (IOException ignored) { - } - } - } - } -} diff --git a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java index 6fd4231..f5e9333 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java +++ b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java @@ -64,30 +64,11 @@ public class Controller implements ControllerInterface { }); } - @Override - public EventHandler getSaveFileEventHandler() { - return new SaveFile(); - } - @Override public EventHandler getSaveAsFileEventHandler() { return new SaveAsFile(); } - @Override - public void saveAsFile() { - Tab selectedTab = tabPane.getSelectionModel().getSelectedItem(); - if (selectedTab != null) { - FileChooser fileChooser = new FileChooser(); - fileChooser.setInitialFileName("新建文本"); - fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("文本文档", "*.txt")); - File file = fileChooser.showSaveDialog(null); - if (file != null) { - saveFile(); - } - } - } - @Override public void updateStatusLabel(TextArea textArea) { int caretPosition = textArea.getCaretPosition(); @@ -217,7 +198,4 @@ public class Controller implements ControllerInterface { thread.start(); } - private void saveFile() { - new SaveFile(); - } } diff --git a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java index fe1f27d..7f42157 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java +++ b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java @@ -7,7 +7,6 @@ import java.nio.charset.StandardCharsets; /** * 编码检测工具类 - * */ public class EncodingDetector { diff --git a/src/main/java/org/jcnc/jnotepad/view/init/View.java b/src/main/java/org/jcnc/jnotepad/view/init/View.java index d065b44..37a2a53 100644 --- a/src/main/java/org/jcnc/jnotepad/view/init/View.java +++ b/src/main/java/org/jcnc/jnotepad/view/init/View.java @@ -12,7 +12,6 @@ public class View { // 初始化菜单项的事件处理器 newItem.setOnAction(new Controller().getNewFileEventHandler(new TextArea())); openItem.setOnAction(new Controller().getOpenFileEventHandler()); - saveItem.setOnAction(new Controller().getSaveFileEventHandler()); saveAsItem.setOnAction(new Controller().getSaveAsFileEventHandler()); lineFeedItem.setOnAction(new Controller().getLineFeedEventHandler(new TextArea())); diff --git a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java index 845fb82..cf003ef 100644 --- a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java +++ b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java @@ -20,7 +20,7 @@ public class ViewManager { // 菜单栏组件 public static MenuBar menuBar; //菜单栏 public static Menu fileMenu, setMenu; //文件菜单 - public static MenuItem newItem, openItem, saveItem, saveAsItem; //新建/打开/保存/保存至 菜单 + public static MenuItem newItem, openItem, saveAsItem; //新建/打开/保存/保存至 菜单 public static CheckMenuItem lineFeedItem; // 主界面布局 @@ -69,11 +69,10 @@ public class ViewManager { setMenu = new Menu("设置"); newItem = new MenuItem("新建"); openItem = new MenuItem("打开"); - saveItem = new MenuItem("保存"); saveAsItem = new MenuItem("另存为"); lineFeedItem = new CheckMenuItem("自动换行"); lineFeedItem.selectedProperty().set(true); - fileMenu.getItems().addAll(newItem, openItem, saveItem, saveAsItem); + fileMenu.getItems().addAll(newItem, openItem, saveAsItem); setMenu.getItems().add(lineFeedItem); menuBar.getMenus().addAll(fileMenu, setMenu);