增加注释

This commit is contained in:
许轲 2023-08-14 13:04:04 +08:00
parent 704e928bb4
commit 929ae12fbf
10 changed files with 48 additions and 89 deletions

View File

@ -44,13 +44,6 @@ public interface ControllerInterface {
*/ */
EventHandler<ActionEvent> getOpenFileEventHandler(); EventHandler<ActionEvent> getOpenFileEventHandler();
/**
* 获取保存文件处理事件处理程序
*
* @return 保存文件处理事件处理程序
*/
EventHandler<ActionEvent> getSaveFileEventHandler();
/** /**
* 获取另存为文件处理事件处理程序 * 获取另存为文件处理事件处理程序
* *
@ -117,9 +110,4 @@ public interface ControllerInterface {
*/ */
void initTabPane(); void initTabPane();
/**
* 另存为文件
*/
void saveAsFile();
} }

View File

@ -3,10 +3,12 @@ package org.jcnc.jnotepad.controller.event.handler;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.EventHandler; import javafx.event.EventHandler;
import javafx.scene.control.TextArea; import javafx.scene.control.TextArea;
/**
* LineFeed 类是一个事件处理程序用于在文本区域中插入一个换行符
*/
/**
* 换行程序
* <p>
* 用于在文本区域中插入一个换行符
*/
public class LineFeed implements EventHandler<ActionEvent> { public class LineFeed implements EventHandler<ActionEvent> {
private final TextArea textArea; private final TextArea textArea;

View File

@ -10,22 +10,38 @@ import org.jcnc.jnotepad.view.manager.ViewManager;
import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane;
/** /**
*处理新建文件事件的事件处理程序 * 新建文件事件的事件处理程序
*当用户选择新建文件菜单或按钮时将创建一个新的文本编辑区并在Tab页中显示 * <p>
* */ * 当用户选择新建文件时候,将创建一个新的文本编辑区并在Tab页中显示
*/
public class NewFile implements EventHandler<ActionEvent> { public class NewFile implements EventHandler<ActionEvent> {
/**
* 处理新建文件事件
*
* @param event 事件对象
*/
@Override @Override
public void handle(ActionEvent event) { public void handle(ActionEvent event) {
// 获取控制器
Controller controller = new Controller(); 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.setContent(textArea);
// 将Tab页添加到TabPane中
tabPane.getTabs().add(tab); tabPane.getTabs().add(tab);
// 将新建的Tab页设置为选中状态
tabPane.getSelectionModel().select(tab); tabPane.getSelectionModel().select(tab);
// 更新状态标签
controller.updateStatusLabel(textArea); controller.updateStatusLabel(textArea);
// 更新编码信息 // 更新编码信息
controller.upDateEncodingLabel(textArea.getText()); // 更新文本编码信息 controller.upDateEncodingLabel(textArea.getText());
} }
} }

View File

@ -12,11 +12,13 @@ import java.io.File;
import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane;
/** /**
* 打开文件事件处理器. * 打开文件的事件处理程序
* <p>
* 当用户选择打开文件时将创建一个新的文本编辑区并在Tab页中显示
*/ */
public class OpenFile implements EventHandler<ActionEvent> { public class OpenFile implements EventHandler<ActionEvent> {
/** /**
* 处理打开文件事件. * 处理打开文件事件
* *
* @param event 事件对象 * @param event 事件对象
*/ */

View File

@ -14,7 +14,20 @@ import java.io.IOException;
import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane;
/**
* 保存文件事件处理器
* <p>
* 当用户选择保存文件时当用户选择另存为文件菜单或按钮时
* 会弹出一个保存文件对话框用户选择保存位置和文件名后
* 将当前文本编辑区的内容保存到指定文件中
* 并更新Tab页上的文件名和UserData
*/
public class SaveAsFile implements EventHandler<ActionEvent> { public class SaveAsFile implements EventHandler<ActionEvent> {
/**
* 处理保存文件事件
*
* @param event 事件对象
*/
@Override @Override
public void handle(ActionEvent event) { public void handle(ActionEvent event) {
Controller controller = new Controller(); Controller controller = new Controller();

View File

@ -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<ActionEvent> {
@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) {
}
}
}
}
}

View File

@ -64,30 +64,11 @@ public class Controller implements ControllerInterface {
}); });
} }
@Override
public EventHandler<ActionEvent> getSaveFileEventHandler() {
return new SaveFile();
}
@Override @Override
public EventHandler<ActionEvent> getSaveAsFileEventHandler() { public EventHandler<ActionEvent> getSaveAsFileEventHandler() {
return new SaveAsFile(); 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 @Override
public void updateStatusLabel(TextArea textArea) { public void updateStatusLabel(TextArea textArea) {
int caretPosition = textArea.getCaretPosition(); int caretPosition = textArea.getCaretPosition();
@ -217,7 +198,4 @@ public class Controller implements ControllerInterface {
thread.start(); thread.start();
} }
private void saveFile() {
new SaveFile();
}
} }

View File

@ -7,7 +7,6 @@ import java.nio.charset.StandardCharsets;
/** /**
* 编码检测工具类 * 编码检测工具类
*
*/ */
public class EncodingDetector { public class EncodingDetector {

View File

@ -12,7 +12,6 @@ public class View {
// 初始化菜单项的事件处理器 // 初始化菜单项的事件处理器
newItem.setOnAction(new Controller().getNewFileEventHandler(new TextArea())); newItem.setOnAction(new Controller().getNewFileEventHandler(new TextArea()));
openItem.setOnAction(new Controller().getOpenFileEventHandler()); openItem.setOnAction(new Controller().getOpenFileEventHandler());
saveItem.setOnAction(new Controller().getSaveFileEventHandler());
saveAsItem.setOnAction(new Controller().getSaveAsFileEventHandler()); saveAsItem.setOnAction(new Controller().getSaveAsFileEventHandler());
lineFeedItem.setOnAction(new Controller().getLineFeedEventHandler(new TextArea())); lineFeedItem.setOnAction(new Controller().getLineFeedEventHandler(new TextArea()));

View File

@ -20,7 +20,7 @@ public class ViewManager {
// 菜单栏组件 // 菜单栏组件
public static MenuBar menuBar; //菜单栏 public static MenuBar menuBar; //菜单栏
public static Menu fileMenu, setMenu; //文件菜单 public static Menu fileMenu, setMenu; //文件菜单
public static MenuItem newItem, openItem, saveItem, saveAsItem; //新建/打开/保存/保存至 菜单 public static MenuItem newItem, openItem, saveAsItem; //新建/打开/保存/保存至 菜单
public static CheckMenuItem lineFeedItem; public static CheckMenuItem lineFeedItem;
// 主界面布局 // 主界面布局
@ -69,11 +69,10 @@ public class ViewManager {
setMenu = new Menu("设置"); setMenu = new Menu("设置");
newItem = new MenuItem("新建"); newItem = new MenuItem("新建");
openItem = new MenuItem("打开"); openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
saveAsItem = new MenuItem("另存为"); saveAsItem = new MenuItem("另存为");
lineFeedItem = new CheckMenuItem("自动换行"); lineFeedItem = new CheckMenuItem("自动换行");
lineFeedItem.selectedProperty().set(true); lineFeedItem.selectedProperty().set(true);
fileMenu.getItems().addAll(newItem, openItem, saveItem, saveAsItem); fileMenu.getItems().addAll(newItem, openItem, saveAsItem);
setMenu.getItems().add(lineFeedItem); setMenu.getItems().add(lineFeedItem);
menuBar.getMenus().addAll(fileMenu, setMenu); menuBar.getMenus().addAll(fileMenu, setMenu);